2010-2013
Khronos Group.
glGetProgramStage
3G

# glGetProgramStage

retrieve properties of a program object corresponding to a specified shader stage

## C Specification

                    void glGetProgramStageiv
                    GLuint program
                    GLenum shadertype
                    GLenum pname
                    GLint *values

## Parameters

`program`

  Specifies the name of the program containing shader stage.

`shadertype`

  Specifies the shader stage from which to query for the subroutine parameter. `shadertype` must be one of `GL_VERTEX_SHADER`, `GL_TESS_CONTROL_SHADER`, `GL_TESS_EVALUATION_SHADER`, `GL_GEOMETRY_SHADER` or `GL_FRAGMENT_SHADER`.

`pname`

  Specifies the parameter of the shader to query. `pname` must be `GL_ACTIVE_SUBROUTINE_UNIFORMS`, `GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS`, `GL_ACTIVE_SUBROUTINES`, `GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH`, or `GL_ACTIVE_SUBROUTINE_MAX_LENGTH`.

`values`

  Specifies the address of a variable into which the queried value or values will be placed.

## Description

`glGetProgramStage` queries a parameter of a shader stage attached to a program object. `program` contains the name of the program to which the shader is attached. `shadertype` specifies the stage from which to query the parameter. `pname` specifies which parameter should be queried. The value or values of the parameter to be queried is returned in the variable whose address is given in `values`.

If `pname` is `GL_ACTIVE_SUBROUTINE_UNIFORMS`, the number of active subroutine variables in the stage is returned in `values`.

If `pname` is `GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS`, the number of active subroutine variable locations in the stage is returned in `values`.

If `pname` is `GL_ACTIVE_SUBROUTINES`, the number of active subroutines in the stage is returned in `values`.

If `pname` is `GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH`, the length of the longest subroutine uniform for the stage is returned in `values`.

If `pname` is `GL_ACTIVE_SUBROUTINE_MAX_LENGTH`, the length of the longest subroutine name for the stage is returned in `values`. The returned name length includes space for the null-terminator.

If there is no shader present of type `shadertype`, the returned value will be consistent with a shader containing no subroutines or subroutine uniforms.

## Errors

`GL_INVALID_ENUM` is generated if `shadertype` or `pname` is not one of the accepted values.

`GL_INVALID_VALUE` is generated if `program` is not the name of an existing program object.

## See Also

glGetProgram

## Copyright

Copyright 2010-2013 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/.