Specifies the binding point to which to bind the uniform block with index <parameter>uniformBlockIndex</parameter> within <parameter>program</parameter>.
Binding points for active uniform blocks are assigned using <function>glUniformBlockBinding</function>. Each of a program's active uniform
blocks has a corresponding uniform buffer binding point. <parameter>program</parameter> is the name of a program object for which the command
<citerefentry><refentrytitle>glLinkProgram</refentrytitle></citerefentry> has been issued in the past.
</para>
<para>
If successful, <function>glUniformBlockBinding</function> specifies that <parameter>program</parameter> will use the data store of the
buffer object bound to the binding point <parameter>uniformBlockBinding</parameter> to extract the values of the uniforms in the
uniform block identified by <parameter>uniformBlockIndex</parameter>.
</para>
<para>
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.
</para>
</refsect1>
<refsect1id="errors"><title>Errors</title>
<para>
<constant>GL_INVALID_VALUE</constant> is generated if <parameter>uniformBlockIndex</parameter> is not an active uniform block index of <parameter>program</parameter>.
</para>
<para>
<constant>GL_INVALID_VALUE</constant> is generated if <parameter>uniformBlockBinding</parameter> is greater than or equal to the value of <constant>GL_MAX_UNIFORM_BUFFER_BINDINGS</constant>.
</para>
<para>
<constant>GL_INVALID_VALUE</constant> is generated <parameter>program</parameter> is not the name of a program object generated by the GL.
</para>
</refsect1>
<refsect1id="notes"><title>Notes</title>
<para>
<function>glUniformBlockBinding</function> is available only if the GL version is 3.1 or greater.