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