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