Jump to: navigation, search
Core in version 4.4
Core since version 4.1
Core ARB extension ARB_separate_shader_objects

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

Function Definition

 void glUseProgramStages(GLuint pipeline​, GLbitfield stages​, GLuint program​);
Specifies the program pipeline object to which to bind stages from program​.
Specifies a set of program stages to bind to the program pipeline object.
Specifies the program object containing the shader executables to use in pipeline​.


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.


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


GL_INVALID_VALUE​ is generated if stages​ 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, glLinkProgram, glCreateShaderProgram


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.