## Name

glGetActiveSubroutineUniformName — query the name of an active shader subroutine uniform

## C Specification

`void glGetActiveSubroutineUniformName(` | GLuint program,
| GLenum shadertype,
| GLuint index,
| GLsizei bufsize,
| GLsizei *length,
| GLchar *name`)`;

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

`bufsize`

  Specifies the size of the buffer whose address is given in `name`.

`length`

  Specifies the address of a variable into which is written the number of characters copied into `name`.

`name`

  Specifies the address of a buffer that will receive the name of the specified shader subroutine uniform.

## Description

`glGetActiveSubroutineUniformName` retrieves the name of an active shader subroutine uniform. `program` contains the name of the program containing the uniform. `shadertype` specifies the stage for 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.

The uniform name is returned as a null-terminated string in `name`. The actual number of characters written into `name`, excluding the null terminator is returned in `length`. If `length` is `NULL`, no length is returned. The maximum number of characters that may be written into `name`, including the null terminator, is specified by `bufsize`. The length of the longest subroutine uniform name in `program` and `shadertype` is given by the value of `GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH`, which can be queried with glGetProgramStage.

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

## See Also

glGetSubroutineIndex, glGetActiveSubroutineUniform, glGetProgramStage

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