2010-2013
Khronos Group.
glGetSubroutineUniformLocation
3G

# glGetSubroutineUniformLocation

retrieve the location of a subroutine uniform of a given shader stage within a program

## C Specification

                    GLint glGetSubroutineUniformLocation
                    GLuint program
                    GLenum shadertype
                    const GLchar *name

## Parameters

`program`

  Specifies the name of the program containing shader stage.

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

`name`

  Specifies the name of the subroutine uniform whose index to query.

## Description

`glGetSubroutineUniformLocation` returns the location of the subroutine uniform variable `name` in the shader stage of type `shadertype` attached to `program`, with behavior otherwise identical to glGetUniformLocation.

If `name` is not the name of a subroutine uniform in the shader stage, -1 is returned, but no error is generated. If `name` is the name of a subroutine uniform in the shader stage, a value between zero and the value of `GL_ACTIVE_SUBROUTINE_LOCATIONS` minus one will be returned. Subroutine locations are assigned using consecutive integers in the range from zero to the value of `GL_ACTIVE_SUBROUTINE_LOCATIONS` minus one for the shader stage. For active subroutine uniforms declared as arrays, the declared array elements are assigned consecutive locations.

## 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, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetUniformLocation

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