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