2010 Khronos Group
glUseProgramStages 3G
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.

## See Also

glGenProgramPipelines, glDeleteProgramPipelines, glIsProgramPipeline

## Copyright

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. http://opencontent.org/openpub/.