在 GLSL 顶点着色器中,我有:
#version 330
layout (location=0) uniform mat4 wm_;
layout (location=1) uniform mat4 vm_;
...more code...
编译着色器时没有编译错误。后来,我在 glGetUniformLocation 上 assert() 用于 wm_ 和 vm_ 返回着色器源中指定的位置。断言触发,因为 glGetUniformLocation 返回不同的值(它不返回 -1,也就是说,制服没有得到优化,它们被分配了看似有效但不同的位置。)
谁能解释这种行为?