为什么第一个代码可以工作,而不是第二个代码? 该代码位于Vertex-Shader中。
第一个代码:
gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * vec4(Position, 1.0);
第二代码:
mat4 View = mat4(
ViewMatrix[0][0], ViewMatrix[1][0], ViewMatrix[2][0], ViewMatrix[3][0],
ViewMatrix[0][1], ViewMatrix[1][1], ViewMatrix[2][1], ViewMatrix[3][1],
ViewMatrix[0][2], ViewMatrix[1][2], ViewMatrix[2][2], ViewMatrix[3][2],
ViewMatrix[0][3], ViewMatrix[1][3], ViewMatrix[2][3], ViewMatrix[3][3]
);
gl_Position = ProjectionMatrix * View * ModelMatrix * vec4(Position, 1.0);
答案 0 :(得分:2)
关于矩阵构造函数的GLSL规范:
将按列主要顺序构建和使用矩阵组件。
前4个浮点数定义新矩阵的第一个列,但您指定它的第一行。您正在将View
设置为转置 ViewMatrix
。
请注意,这绝对会反映C语法和数组约定。