【发布时间】:2017-09-21 15:17:39
【问题描述】:
我目前在 OpenGL 中使用着色器管道对象(可分离着色器阶段)以及带有 glUseProgram() 的旧式单一程序。我想知道,在文档中它说:
If there is a current program object established by `glUseProgram`,
the bound program pipeline object has no effect on rendering or uniform updates.
这让我很困惑,因为我似乎能够做到:
glUseProgram(6); // Render using the single program
glBindProgramPipeline(pipeline_ID);
glUseProgramStages(pipeline_ID, GL_VERTEX_SHADER_BIT, shaderID);
glUseProgramStages(pipeline_ID, GL_FRAGMENT_SHADER_BIT, shaderID);
在调用glUseProgramPipeline 之前没有先设置glUseProgram(0)。我认为的文档暗示它不起作用,但我可以像这样渲染得很好。调用glBindProgramPipeline之前需要设置glUseProgram(0)吗?
【问题讨论】:
-
@BDL 哦,我明白了,我没这么理解。希望有人能澄清一下。