3
我有以下着色器: 我的片段着色器:統一無效
#version 110
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
void main() {
gl_FragColor = vec4(1, 0, 0, 1);
}
我的頂點着色器:
#version 110
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
attribute vec3 vertex;
void main() {
vec4 world = modelMatrix * vec4(vertex, 1);
vec4 camera = world * viewMatrix;
gl_Position = projectionMatrix * world;
}
他們編譯和鏈接就好了。當我打印出我的活動制服時,我得到
projectionMatrix
modelMatrix
但沒有viewMatrix。當我嘗試使用glGetUniformLocation來獲得統一格式時,我可以得到projectionMatrix,modelMatrix和我的頂點屬性,所以viewMatrix爲什麼是非活動的?
感謝您的快速回復! – Vastsuperking
謝謝關於我的視圖變換正在倒退的通知,我忘記了矩陣乘法不是可交換的 – Vastsuperking
'glPosition = projectionMatrix * camera'將等價於'glPosition = projectionMatrix * viewMatrix * modelMatrix * vec4(vertex,1)',是你正在計算的東西。請注意,雖然組合矩陣通常被稱爲MV,MVP等,但乘法的實際順序是「P * V * M」。 – bcrist