Is ordering between glUniformBlockBinding and glBindBufferBase important?

framebuffer, glsl, opengl

Solution

`glUniformBlockBinding` sets state in the program (which is why you shouldn't be calling it every frame). `glBindBufferRange` sets state in the OpenGL context. Neither affects the other until you render, so no, it doesn't matter which.

And yes, you cannot call `glBindBufferRange` (or Base, which is defined in terms of Range) unless you have allocated storage for the buffer object.

Problem

When using UBOs, we bind a uniform block to a binding point. Then we also bind the UBO to the same binding point: something like: ``` glUseProgram(ProgramName); glUniformBlockBinding(ProgramName, uniformLocation, bindingPoint); glBindBufferBase(GL_UNIFORM_BUFFER, bindingPoint, bufId); ``` I have 2 questions on this: - should I specify glUniformBlockBinding first or glBindBufferBase or the order doesn't matter? - If my understanding is correct, then glBindBufferBase must be called only after we have updated the UBO with data. If this is correct then this answers my first question.

Original source