M44 op,va0,vc0 - 这是什么意思? 这是顶点着色器的第一行。 我看了很多次但是我不明白以下几点: Vc0 - 空3d矩阵 - 对象的位置 Va0 - 顶点坐标
为什么我们要在矩阵上乘以向量?
提前谢谢!
答案 0 :(得分:0)
vc0 - 空3d矩阵 为何空?在这种情况下(在大多数情况下)它是MVP(模型 - 视图 - 投影)矩阵。 va0 - 局部空间中的顶点坐标(在模型空间中)。为了使一个物体改变它的位置。方向,比例以及为了使相机可见,您需要对其应用变换。那条线就是那么做的。
答案 1 :(得分:0)
顶点着色器通过vc0(顶点常量寄存器0)中传递的投影矩阵平移和旋转传递的顶点缓冲区(va0)中的每个顶点。
顶点缓冲区是正在渲染的模型中的顶点列表
投影矩阵是模型的矩阵3D,附加了摄像机的matrix3D和PerspectiveMatrix3D的反转。
perspectiveMatrix3D可以像这样设置:
projectionmatrix.perspectiveFieldOfViewRH(45.0, swfWidth / swfHeight, 1, 15000);
...其中'45 .0'是视野,'swfWidth / swfHeight'是宽度与高度的比例,'1'是近剪裁平面,'15000'是远剪裁平面。
将模型的顶点乘以着色器中的投影矩阵,将模型定向到剪辑空间中的正确位置。这就是为什么计算结果可以立即发送到输出位置寄存器(op)的原因。