## Name

glGetActiveSubroutineUniform — query a property of an active shader subroutine uniform

## C Specification

`void glGetActiveSubroutineUniformiv(` | GLuint program,
| GLenum shadertype,
| GLuint index,
| GLenum pname,
| GLint *values`)`;

## Parameters

`program`

  Specifies the name of the program containing the subroutine.

`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`.

`index`

  Specifies the index of the shader subroutine uniform.

`pname`

  Specifies the parameter of the shader subroutine uniform to query. `pname` must be `GL_NUM_COMPATIBLE_SUBROUTINES`, `GL_COMPATIBLE_SUBROUTINES`, `GL_UNIFORM_SIZE` or `GL_UNIFORM_NAME_LENGTH`.

`values`

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

## Description

`glGetActiveSubroutineUniform` queries a parameter of an active shader subroutine uniform. `program` contains the name of the program containing the uniform. `shadertype` specifies the stage which which the uniform location, given by `index`, is valid. `index` must be between zero and the value of `GL_ACTIVE_SUBROUTINE_UNIFORMS` minus one for the shader stage.

If `pname` is `GL_NUM_COMPATIBLE_SUBROUTINES`, a single integer indicating the number of subroutines that can be assigned to the uniform is returned in `values`.

If `pname` is `GL_COMPATIBLE_SUBROUTINES`, an array of integers is returned in `values`, with each integer specifying the index of an active subroutine that can be assigned to the selected subroutine uniform. The number of integers returned is the same as the value returned for `GL_NUM_COMPATIBLE_SUBROUTINES`.

If `pname` is `GL_UNIFORM_SIZE`, a single integer is returned in `values`. If the selected subroutine uniform is an array, the declared size of the array is returned; otherwise, one is returned.

If `pname` is `GL_UNIFORM_NAME_LENGTH`, a single integer specifying the length of the subroutine uniform name (including the terminating null character) is returned in `values`.

## Errors

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

`GL_INVALID_VALUE` is generated if `index` is greater than or equal to the value of `GL_ACTIVE_SUBROUTINES`.

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

## Associated Gets

glGetProgramStage with argument `GL_ACTIVE_SUBROUTINE_UNIFORMS`

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

## See Also

glGetSubroutineIndex, glGetActiveSubroutineUniformName, glGetProgramStage

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