2010-2014
Khronos Group
glUniformBlockBinding
3G

# glUniformBlockBinding

assign a binding point to an active uniform block

## C Specification

                    void glUniformBlockBinding
                    GLuint program
                    GLuint uniformBlockIndex
                    GLuint uniformBlockBinding

## Parameters

`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.

## Errors

`GL_INVALID_VALUE` is generated if `uniformBlockIndex` is not an active uniform block index of `program`.

`GL_INVALID_VALUE` is generated if `uniformBlockBinding` is greater than or equal to the value of `GL_MAX_UNIFORM_BUFFER_BINDINGS`.

`GL_INVALID_VALUE` is generated if `program` is not the name of a program object generated by the GL.

## Associated Gets

glGet with argument `GL_MAX_UNIFORM_BUFFER_BINDINGS`

glGetActiveUniformBlockiv with argument `GL_UNIFORM_BLOCK_BINDING`

## API Version Support

glUniformBlockBinding

## See Also

glLinkProgram, glBindBufferBase, glBindBufferRange, glGetActiveUniformBlockiv

## Copyright

Copyright 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.