如果我理解正确,一些 OpenGL 状态依赖于其他状态:
glUseProgram(program1);
glUniform1i(program1Uniform1, x);
glUseProgram(program2);
glUniform1i(program2Uniform1, y);
glUseProgram(program1);
在这段代码片段的末尾,uniformprogram1
仍然设置为x
,即使program1Uniform1
与 具有相同的索引program2Uniform1
。所以,第二次调用glUniform1i
不会覆盖第一次调用,因为我们已经在两次调用之间切换了着色器程序。
到目前为止是正确的吗?
如果它是正确的,那么统一状态对程序状态有某种依赖性,因为如果我们通过调用来切换程序glUseProgram()
,统一状态就会隐式改变。
是否有列出这些依赖项的书或网站?
我想我理解着色器程序、FBO、VBO、VAO、制服、属性等的概念,但我仍然很难将它们放在一起。我总是问自己“我必须在切换状态 A 之后切换状态 B,还是状态 B 依赖于状态 A?”