From OpenGL Wiki
Jump to: navigation, search
Core in version 4.6
Core since version 3.0

glBindFragDataLocation: bind a user-defined varying out variable to a fragment shader color number

Function Definition

 void glBindFragDataLocation(GLuint program​, GLuint colorNumber​, const char * name​);
The name of the program containing varying out variable whose binding to modify
The color number to bind the user-defined varying out variable to
The name of the user-defined varying out variable whose binding to modify


glBindFragDataLocation explicitly specifies the binding of the user-defined varying out variable name​ to fragment shader color number colorNumber​ for program program​. If name​ was bound previously, its assigned binding is replaced with colorNumber​. name​ must be a null-terminated string. colorNumber​ must be less than GL_MAX_DRAW_BUFFERS.

The bindings specified by glBindFragDataLocation have no effect until program​ is next linked. Bindings may be specified at any time after program​ has been created. Specifically, they may be specified before shader objects are attached to the program. Therefore, any name may be specified in name​, including a name that is never used as a varying out variable in any fragment shader object. Names beginning with gl_ are reserved by the GL.

In addition to the errors generated by glBindFragDataLocation, the program program​ will fail to link if: * The number of active outputs is greater than the value GL_MAX_DRAW_BUFFERS.

  • More than one varying out variable is bound to the same color number.


Varying out varyings may have indexed locations assigned explicitly in the shader text using a location 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 glBindFragDataLocation is ignored.


GL_INVALID_VALUE is generated if colorNumber​ is greater than or equal to GL_MAX_DRAW_BUFFERS.

GL_INVALID_OPERATION is generated if name​ starts with the reserved gl_ prefix.

GL_INVALID_OPERATION is generated if program is not the name of a program object.

Associated Gets

glGetFragDataLocation with a valid program object and the the name of a user-defined varying out variable

See Also

glLinkProgram, glDrawBuffer, glDrawBuffers, glBindFragDataLocationIndexed


Copyright © 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.