视口、剪切、反馈

齐次坐标

     就是将一个原本是n维的向量用一个n+1维的向量来表示,目的是合并矩阵运算中的乘法好加法

          点P(4,2)的齐次坐标为(8,4,2)、(4,2,1)    //注意二者区别

         向量P(1,2,3)的齐次坐标为(1,2,3,0)


矩阵变换

     vmath::mat4  translate = vmath::translate(1.0, 2.0, 3.0);    //平移

       vmath::mat4  scale = vmath::scale(0.5);    //缩放

       vmath::mat4  rotate = vmath::rotate(30, 60, 90);    //旋转

      glUniformMatrix4fv(matrix_loc, 1, GL_FALSE, translate)   //将这个矩阵传递给当前的着色程序



投影

    透视投影:vmath::frustum(左,右,下,上,近,远)     也可用lookAt(eye, center, up)

      正交投影:vmath::ortho(eye, center, up)



剪切

   glEnable(GL_CLIP_PLANE0)

     gl_ClipDistance[0] = dot(Vertex, Plane);   //计算平面方程



transform feedback

    重新捕获即将进入图元装配的顶点,再将它们的属性传递到缓存对象中。因为整个图元数据会被捕获到缓存对象中,而我们认为缓存的空间不够,必须丢弃一部分图元,为了确保这一过程,需要transform feedback阶段给出当前的图元类型信息。目的是让应用程序可以获取到渲染流水线上的顶点数据。

   glTransformFeedbackVaryings(render_prog, 1, varyings2, GL_INTERLEAVED_ATTRIBS);  //配置变量

   glGenBuffers(2, vbo);

   glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, vbo[i]);
   glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, ...);
    glBeginTransformFeedback(GL_POINTS);                                                   //开始捕获
    glDrawArrays(GL_POINTS, 0, min(point_count, (frame_count >> 3)));
    glEndTransformFeedback();

=====================

视口变换:就是决定可视窗口的大小。

视图变换:从不同的位置去观察它。

模型变换:移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它。 

投影变换:如果把物体画下来,我们可以选择:是否需要一种“近大远小”的透视效果。另外,我们可能只希望看到物体的一部分,而不是全部(剪裁)。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值