打开GL ES 2.0模型视图投影矩阵乘法顺序

时间:2014-05-07 14:47:41

标签: matrix opengl-es transformation

我关注矩阵乘法顺序。我见过多个例子,其中一些如下: model * view * projection

而其他人则如下所示: 投影*视图*模型

我知道矩阵乘法不是可交换的,那么哪个顺序是正确的?

1 个答案:

答案 0 :(得分:1)

您可以通过以下逻辑推导订单:

您的对象包含顶点,即矢量。通过将矢量与左侧相乘,将矩阵变换应用于矢量。

你想在3D场景中做什么?您希望将对象移动到正确的位置(模型转换),然后将其转换为相机空间(视图转换),最后您需要应用正交投影或透视投影。按此顺序,您必须将矩阵应用于顶点向量,这会导致(数学正确)顺序projection * view * model * vertex。因此,您首先将模型应用于您的顶点,然后查看,然后投影。

但您也可以将括号设置为此公式中的任何位置。通过以下内容,您可以预先计算整个变换矩阵,包括模型,视图和投影。然后将其移至着色器并将此矩阵应用于每个顶点,如下所示:(projection * view * model) * vertex

编辑你的下一个问题:在框架中使用它的顺序可以改变。因为大多数编程语言中*的关联性是从左到右。在矩阵 - 矩阵乘法方面,这将是错误的顺序。记住:矩阵乘法从右到左!如何完成框架中的计算取决于其实现,因此没有一般规则。