<function>glBindFragDataLocationIndexed</function> specifies that the varying out variable <parameter>name</parameter> in
<parameter>program</parameter> should be bound to fragment color <parameter>colorNumber</parameter> when the program is next
linked. <parameter>index</parameter> may be zero or one to specify that the color be used as either the first or second color
input to the blend equation, respectively.
</para>
<para>
The bindings specified by <function>glBindFragDataLocationIndexed</function> have no effect until <parameter>program</parameter>
is next linked. Bindings may be specified at any time after <parameter>program</parameter> has been created. Specifically,
they may be specified before shader objects are attached to the program. Therefore, any name may be specified in <parameter>name</parameter>,
including a name that is never used as a varying out variable in any fragment shader object. Names beginning with <constant>gl_</constant> are
reserved by the GL.
</para>
<para>
If <parameter>name</parameter> was bound previously, its assigned binding is replaced with <parameter>colorNumber</parameter> and
<parameter>index</parameter>. <parameter>name</parameter> must be a null-terminated string. <parameter>index</parameter> must be less than or equal to one,
and <parameter>colorNumber</parameter> must be less than the value of <constant>GL_MAX_DRAW_BUFFERS</constant> if <parameter>index</parameter>
is zero, and less than the value of <constant>GL_MAX_DUAL_SOURCE_DRAW_BUFFERS</constant> if index is greater than or equal to one.
</para>
<para>
In addition to the errors generated by <function>glBindFragDataLocationIndexed</function>, the
program <parameter>program</parameter> will fail to link if:
<itemizedlist>
<listitem>
<para>
The number of active outputs is greater than the value <constant>GL_MAX_DRAW_BUFFERS</constant>.
</para>
</listitem>
<listitem>
<para>
More than one varying out variable is bound to the same color number.
</para>
</listitem>
</itemizedlist>
</para>
</refsect1>
<refsect1id="notes"><title>Notes</title>
<para>
Varying out varyings may have locations assigned explicitly in the shader text using a <code>location</code>
layout qualifier. If a shader statically assigns a location to a varying out variable in the shader text,
that location is used and any location assigned with <function>glBindFragDataLocation</function> is ignored.
</para>
</refsect1>
<refsect1id="errors"><title>Errors</title>
<para>
<constant>GL_INVALID_VALUE</constant> is generated if <parameter>colorNumber</parameter> is greater than or equal to <constant>GL_MAX_DRAW_BUFFERS</constant>.
</para>
<para>
<constant>GL_INVALID_VALUE</constant> is generated if <parameter>colorNumber</parameter> is greater than or equal to <constant>GL_MAX_DUAL_SOURCE_DRAW_BUFERS</constant>
and <parameter>index</parameter> is greater than or equal to one.
</para>
<para>
<constant>GL_INVALID_VALUE</constant> is generated if <parameter>index</parameter> is greater than one.
</para>
<para>
<constant>GL_INVALID_OPERATION</constant> is generated if <parameter>name</parameter> starts with the reserved <constant>gl_</constant> prefix.
</para>
<para>
<constant>GL_INVALID_OPERATION</constant> is generated if <function>program</function> is not the name of a program object.