Matrix OpenGL ES 2.0模型视图投影矩阵乘法顺序

Matrix OpenGL ES 2.0模型视图投影矩阵乘法顺序,matrix,opengl-es,transformation,Matrix,Opengl Es,Transformation,我关心的是矩阵乘法顺序。我见过多个例子,其中一些例子是这样的: 模型*视图*投影 而其他人则像这样繁殖: 投影*视图*模型 我知道矩阵乘法不是可交换的,那么哪个顺序是正确的?您可以通过以下逻辑推导出顺序: 对象包含顶点,这些顶点是向量。矩阵变换将应用于向量,方法是将其从左侧相乘 你想在3D场景中做什么?要将对象移动到正确的位置(模型变换),然后将其变换到摄影机空间(视图变换),最后要应用正交投影或透视投影。按此顺序,必须将矩阵应用于顶点向量,这将导致(数学正确)顺序投影*视图*模型*顶点。所以,

我关心的是矩阵乘法顺序。我见过多个例子,其中一些例子是这样的: 模型*视图*投影

而其他人则像这样繁殖: 投影*视图*模型


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

您可以通过以下逻辑推导出顺序:

对象包含顶点,这些顶点是向量。矩阵变换将应用于向量,方法是将其从左侧相乘


你想在3D场景中做什么?要将对象移动到正确的位置(模型变换),然后将其变换到摄影机空间(视图变换),最后要应用正交投影或透视投影。按此顺序,必须将矩阵应用于顶点向量,这将导致(数学正确)顺序
投影*视图*模型*顶点
。所以,首先将模型应用于顶点,然后是视图,然后是投影

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


编辑到下一个问题:在框架中使用此选项的顺序可能会改变。因为在大多数编程语言中,
*
的关联性是从左到右的。这是错误的矩阵乘法顺序。记住:矩阵乘法是从右向左的!框架中的计算是如何进行的取决于它的实现,因此没有通用的规则。

投影*视图*模型
好的,我有一个代码,它包含模型*视图*投影顺序,你能解释为什么吗?如果
*
的关联性是从左到右的,然后您将编写
顶点*模型*视图*投影
,即
((顶点*模型)*视图)*投影