--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry id="glBindFragDataLocation">
+ <refmeta>
+ <refmetainfo>
+ <copyright>
+ <year>2010</year>
+ <holder>Khronos Group</holder>
+ </copyright>
+ </refmetainfo>
+ <refentrytitle>glBindFragDataLocation</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>glBindFragDataLocation</refname>
+ <refpurpose>bind a user-defined varying out variable to a fragment shader color number</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void <function>glBindFragDataLocation</function></funcdef>
+ <paramdef>GLuint <parameter>program</parameter></paramdef>
+ <paramdef>GLuint <parameter>colorNumber</parameter></paramdef>
+ <paramdef>const char * <parameter>name</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>program</parameter></term>
+ <listitem>
+ <para>
+ The name of the program containing varying out variable whose binding to modify
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>colorNumber</parameter></term>
+ <listitem>
+ <para>
+ The color number to bind the user-defined varying out variable to
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>name</parameter></term>
+ <listitem>
+ <para>
+ The name of the user-defined varying out variable whose binding to modify
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>glBindFragDataLocation</function> explicitly specifies the binding of the user-defined varying out variable
+ <parameter>name</parameter> to fragment shader color number <parameter>colorNumber</parameter> for program
+ <parameter>program</parameter>. If <parameter>name</parameter> was bound previously, its assigned binding is replaced
+ with <parameter>colorNumber</parameter>. <parameter>name</parameter> must be a null-terminated string. <parameter>colorNumber</parameter>
+ must be less than <constant>GL_MAX_DRAW_BUFFERS</constant>.
+ </para>
+ <para>
+ The bindings specified by <function>glBindFragDataLocation</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>
+ In addition to the errors generated by <function>glBindFragDataLocation</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>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Varying out varyings may have indexed 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>
+ <refsect1 id="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_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.
+ </para>
+ </refsect1>
+ <refsect1 id="associatedgets"><title>Associated Gets</title>
+ <para>
+ <citerefentry><refentrytitle>glGetFragDataLocation</refentrytitle></citerefentry> with a valid program object
+ and the the name of a user-defined varying out variable
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glCreateProgram</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glGetFragDataLocation</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect1 id="Copyright"><title>Copyright</title>
+ <para>
+ Copyright <trademark class="copyright"></trademark> 2010 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.
+ <ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.
+ </para>
+ </refsect1>
+</refentry>