使用UBO时,我们将统一块绑定(bind)到绑定(bind)点。然后,我们还将UBO绑定(bind)到相同的绑定(bind)点:
就像是:
glUseProgram(ProgramName);
glUniformBlockBinding(ProgramName, uniformLocation, bindingPoint);
glBindBufferBase(GL_UNIFORM_BUFFER, bindingPoint, bufId);
我对此有2个问题:
最佳答案
glUniformBlockBinding
设置程序中的状态(这就是为什么您不应该在每一帧都调用它的原因)。 glBindBufferRange
在OpenGL上下文中设置状态。在渲染之前,这两个都不会影响彼此,所以不,哪个都无关紧要。
是的,除非为缓冲区对象分配了存储空间,否则无法调用glBindBufferRange
(或Base(根据范围来定义))。