明确的统一位置无效

时间:2013-02-17 07:17:01

标签: opengl glsl

在GLSL顶点着色器中,我有:

#version 330
layout (location=0) uniform mat4 wm_;
layout (location=1) uniform mat4 vm_;
...more code...

编译着色器时,我没有编译错误。后来,我在glGetUniformLocation上断言()为wm_和vm_返回着色器源中指定的位置。 asserions触发,因为glGetUniformLocation返回不同的值(它不返回-1,也就是说,制服没有被优化掉,它们被分配了看似有效但位置不同的东西。)

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:3)

自GLSL 4.30或扩展GL_ARB_explicit_uniform_location以来,支持显式统一位置。 这里的编译器过于宽容,并允许GLSL 3.30中不支持的语法 这应该被视为驱动程序错误。