Uniform Buffer Object
//vert1.vs1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
layout (location = 0) in vec3 aPos;
uniform mat4 model;
layout (std140) uniform Matrices
{
mat4 projection;
mat4 view;
};
void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
//vert2.vs1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
layout (location = 0) in vec3 aPos;
layout (std140) uniform Matrices
{
mat4 projection;
mat4 view;
};
uniform mat4 model;
void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
1 | //uniformBlockBinding < GL_MAX_UNIFORM_BUFFER_BINDINGS |
Function Definition
void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
program
The name of a program object containing the active uniform block whose binding to assign.
uniformBlockIndex
The index of the active uniform block within program whose binding to assign.
uniformBlockBinding
Specifies the binding point to which to bind the uniform block with index uniformBlockIndex within program.
Description
Binding points for active uniform blocks are assigned using glUniformBlockBinding. Each of a program’s active uniform blocks has a corresponding uniform buffer binding point. program is the name of a program object for which the command glLinkProgram has been issued in the past.
If successful, glUniformBlockBinding specifies that program will use the data store of the buffer object bound to the binding point uniformBlockBinding to extract the values of the uniforms in the uniform block identified by uniformBlockIndex.
When a program object is linked or re-linked, the uniform buffer object binding point assigned to each of its active uniform blocks is reset to zero.