4

虽然当我这样做时图形输出完全混乱,但我出于好奇尝试了它。我原以为它会由于非法的数学运算而崩溃:

 //    gl_Position=Projection*Modelview*Position; <- normal, works fine
 //    gl_Position=Position*Modelview*Projection; <- bad output, but still runs fine

Position是向量,其他是矩阵。

OpenGL是列优先的,这应该意味着你只能在矩阵的右边乘一个向量。如果向量是列,则没有数学方法可以将向量乘以矩阵的左侧,因为内部尺寸不匹配:4x1 * 4x4

那么为什么我在尝试时实际上会得到输出呢?OpenGL 实际上对向量矩阵乘法做了什么?

4

1 回答 1

7

与左侧向量的向量矩阵乘法在 GLSL 中被解释为好像您的列向量变成了行向量。

实际上,这就像将列向量乘以矩阵的转置。

http://en.wikibooks.org/wiki/GLSL_Programming/Vector_and_Matrix_Operations#Operators

于 2013-06-04T03:59:11.533 回答