## Name

glGetUniformSubroutine — retrieve the value of a subroutine uniform of a given shader stage of the current program

## C Specification

`void glGetUniformSubroutineuiv(` | GLenum shadertype,
| GLint location,
| GLuint *values`)`;

## Parameters

`shadertype`

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

`location`

  Specifies the location of the subroutine uniform.

`values`

  Specifies the address of a variable to receive the value or values of the subroutine uniform.

## Description

`glGetUniformSubroutine` retrieves the value of the subroutine uniform at location `location` for shader stage `shadertype` of the current program. `location` must be less than the value of `GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS` for the shader currently in use at shader stage `shadertype`. The value of the subroutine uniform is returned in `values`.

## Errors

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

`GL_INVALID_VALUE` is generated if `location` is greater than or equal to the value of `GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS` for the shader currently in use at shader stage `shadertype`.

`GL_INVALID_OPERATION` is generated if no program is active.

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

## See Also

glGetProgram, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetUniformLocation

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