## Name

glUseProgramStages — bind stages of a program object to a program pipeline

## C Specification

`void glUseProgramStages(` | GLuint pipeline,
| GLbitfield stages,
| GLuint program`)`;

## Parameters

`pipeline`

  Specifies the program pipeline object to which to bind stages from `program`.

`stages`

  Specifies a set of program stages to bind to the program pipeline object.

`program`

  Specifies the program object containing the shader executables to use in `pipeline`.

## Description

`glUseProgramStages` binds executables from a program object associated with a specified set of shader stages to the program pipeline object given by `pipeline`. `pipeline` specifies the program pipeline object to which to bind the executables. `stages` contains a logical combination of bits indicating the shader stages to use within `program` with the program pipeline object `pipeline`. `stages` must be a logical combination of `GL_VERTEX_SHADER_BIT`, `GL_TESS_CONTROL_SHADER_BIT`, `GL_TESS_EVALUATION_SHADER_BIT`, `GL_GEOMETRY_SHADER_BIT`, `GL_FRAGMENT_SHADER_BIT` and `GL_COMPUTE_SHADER_BIT`. Additionally, the special value `GL_ALL_SHADER_BITS` may be specified to indicate that all executables contained in `program` should be installed in `pipeline`.

If `program` refers to a program object with a valid shader attached for an indicated shader stage, `glUseProgramStages` installs the executable code for that stage in the indicated program pipeline object `pipeline`. If `program` is zero, or refers to a program object with no valid shader executable for a given stage, it is as if the pipeline object has no programmable stage configured for the indicated shader stages. If `stages` contains bits other than those listed above, and is not equal to `GL_ALL_SHADER_BITS`, an error is generated.

## Notes

The `GL_COMPUTE_SHADER_BIT` bit is available only if the GL version is 4.3 or greater.

## Errors

`GL_INVALID_VALUE` is generated if `shaders` contains set bits that are not recognized, and is not the reserved value `GL_ALL_SHADER_BITS`.

`GL_INVALID_OPERATION` is generated if `program` refers to a program object that was not linked with its `GL_PROGRAM_SEPARABLE` status set.

`GL_INVALID_OPERATION` is generated if `program` refers to a program object that has not been successfully linked.

`GL_INVALID_OPERATION` is generated if `pipeline` is not a name previously returned from a call to glGenProgramPipelines or if such a name has been deleted by a call to glDeleteProgramPipelines.

## 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
`glUseProgramStages` | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glGenProgramPipelines, glDeleteProgramPipelines, glIsProgramPipeline

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