为什么在着色器中反转矢量矩阵多阶是合法的?

时间:2013-06-04 03:47:42

标签: math opengl graphics 3d glsl

虽然我这样做时图形输出完全搞砸了,但我出于好奇而尝试了它。我期待它因非法数学运算而崩溃:

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

Position是向量,其他是矩阵。

OpenGL是列专业,这意味着你只能在矩阵的右边乘以一个向量。如果向量是列,则没有数学方法将向量乘以矩阵的左边,因为内部维度不匹配:4x1 * 4x4

那么为什么我在尝试时实际获得输出?什么是OpenGL实际上使用向量矩阵乘法?

1 个答案:

答案 0 :(得分:7)

左侧矢量的矢量矩阵乘法在GLSL中被解释,就像您的列矢量成为行矢量一样。

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

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