## Name

glBindFragDataLocationIndexed — bind a user-defined varying out variable to a fragment shader color number and index

## C Specification

`void glBindFragDataLocationIndexed(` | GLuint program,
| GLuint colorNumber,
| GLuint index,
| 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

`index`

  The index of the color input to bind the user-defined varying out variable to

`name`

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

## Description

`glBindFragDataLocationIndexed` specifies that the varying out variable `name` in `program` should be bound to fragment color `colorNumber` when the program is next linked. `index` 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.

The bindings specified by `glBindFragDataLocationIndexed` 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.

If `name` was bound previously, its assigned binding is replaced with `colorNumber` and `index`. `name` must be a null-terminated string. `index` must be less than or equal to one, and `colorNumber` must be less than the value of `GL_MAX_DRAW_BUFFERS` if `index` is zero, and less than the value of `GL_MAX_DUAL_SOURCE_DRAW_BUFFERS` if index is greater than or equal to one.

In addition to the errors generated by `glBindFragDataLocationIndexed`, 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 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_VALUE` is generated if `colorNumber` is greater than or equal to `GL_MAX_DUAL_SOURCE_DRAW_BUFFERS` and `index` is greater than or equal to one.

`GL_INVALID_VALUE` is generated if `index` is greater than one.

`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

glGetFragDataIndex with a valid program object and the 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
`glBindFragDataLocationIndexed` | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glCreateProgram, glLinkProgram glGetFragDataLocation, glGetFragDataIndex glBindFragDataLocation

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