我无法找到任何明确说明的内容,但我可以这样做:
unsigned int someUniform = 0;
unsigned int anotherUniform = 0;
glUseProgram(1);
someUniform = glGetUniformLocation(1, "uniformLocation");
glUniform3f(someUniform, 1, 1, 1);
glUseProgram(2);
anotherUniform = glGetUniformLocation(2, "anotherUniform");
glUniform3f(anotherUniform, 1, 1, 1);
在下一帧中,我只是打电话:
glUseProgram(1);
glUniform3f(someUniform, 1, 1, 1);
glUseProgram(2);
glUniform3f(anotherUniform, 1, 1, 1);
我测试了一下它确实保持不变,但我只有两个程序,我认为我称之为复杂。
我是否需要每帧都获得uniformLocation,或者我可以找到它的位置一次并确保它始终相同?
答案 0 :(得分:2)
只要你理解了两件事你就应该好好:
在连接着色器后建立统一位置
统一位置是每个程序状态
答案 1 :(得分:0)
如果你不重新编译着色器/重新链接程序,制服将保持不变。