joh*_*ers 3 opengl math 3d graphics glsl
当我这样做时,图形输出完全搞砸了,我出于好奇而尝试了它.由于非法数学运算,我原以为它会崩溃:
// gl_Position=Projection*Modelview*Position; <- normal, works fine
// gl_Position=Position*Modelview*Projection; <- bad output, but still runs fine
Run Code Online (Sandbox Code Playgroud)
Position 是矢量,其他是矩阵.
OpenGL是列主要的,这意味着你只能在矩阵的右边乘以一个向量.如果向量是列,则没有数学方法将向量乘以矩阵的左边,因为内部维度不匹配:4x1*4x4
那么为什么我在尝试时实际获得输出呢?什么是OpenGL实际上使用向量矩阵乘法?
在左侧的向量的向量矩阵乘法在GLSL中被解释,就像您的列向量变成行向量一样.
实际上,这就像将列向量乘以矩阵的转置一样.
http://en.wikibooks.org/wiki/GLSL_Programming/Vector_and_Matrix_Operations#Operators