我通常会发现矩阵库从RUB(右上 - 后)向量构建模型视图和相机矩阵,如下所示:
http://3dengine.org/Right-up-back_from_modelview http://3dengine.org/Modelview_matrix
RUB元组只是一个通用标准吗? 否则,RUB向量是否优于任何其他方向(例如前向右)?
答案 0 :(得分:4)
特别是如果您正在使用可编程管道,您几乎可以完全自由地使用您所使用的坐标系,以及如何转换几何体。但是,一旦在顶点着色器中应用了所有变换(导致向量分配给gl_Position
),顶点着色器和片段着色器之间的管道中仍然存在固定的功能块。固定功能块依赖于转换后的顶点位于定义良好的坐标系中。
gl_Position
位于称为“剪辑坐标”的坐标系中,然后在除以矢量的w
坐标后变为“规范化设备坐标”(NDC)。
基于NDC中的矢量,固定功能光栅化块生成像素。它将使用第一个坐标映射到水平窗口方向,第二个坐标映射到垂直窗口方向。第三个坐标将用于计算深度,可用于深度测试。
这意味着在应用所有变换后,第一个坐标必须左右,第二个坐标必须是自下而上,第三个坐标必须是前后坐标(好吧,如果你改变深度测试,它可能是后面的。)
如果您使用带有模型视图和投影矩阵的经典设置,则使用模型视图矩阵将原始几何图形转换为此方向是有意义的,然后使用投影矩阵来应用例如一个观点。
我认为没有什么能阻止你使用不同的方向作为模型视图转换的结果,然后在投影矩阵中包含一个旋转,以将整个事物转换为正确的剪辑坐标空间。但我没有看到任何好处,看起来它只会增加不必要的混淆。