使用UBO时,我们将统一块绑定到绑定点。然后我们还将UBO绑定到同一个绑定点: 类似的东西:
glUseProgram(ProgramName);
glUniformBlockBinding(ProgramName, uniformLocation, bindingPoint);
glBindBufferBase(GL_UNIFORM_BUFFER, bindingPoint, bufId);
我有两个问题:
答案 0 :(得分:10)
glUniformBlockBinding
在程序中设置状态(这就是为什么你不应该每帧调用它)。 glBindBufferRange
在OpenGL上下文中设置状态。在渲染之前,它们都不会影响另一个,所以不,无论哪个都没关系。
是的,除非你为缓冲区对象分配了存储空间,否则你不能调用glBindBufferRange
(或Base,它是根据Range定义的)。