glBindFragDataLocation - OpenGL 4 Reference Pages

## Name

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

## C Specification

`void glBindFragDataLocation(` | GLuint program,
| GLuint colorNumber,
| const char * name`)`;

## Parameters

`program`

  The name of the program containing varying out variable whose binding to modify

`colorNumber`

  The color number to bind the user-defined varying out variable to

`name`

  The name of the user-defined varying out variable whose binding to modify

## Description

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

## Notes

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.

## Errors

`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 name of a user-defined varying out variable

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glBindFragDataLocation` | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glCreateProgram, glGetFragDataLocation

## 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/.