<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>glGetActiveSubroutineUniform - OpenGL 4 Reference Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glGetActiveSubroutineUniform"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glGetActiveSubroutineUniform — query a property of an active shader subroutine uniform</p></div><div class="refsynopsisdiv"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr><td><code class="funcdef">void <b class="fsfunc">glGetActiveSubroutineUniformiv</b>(</code></td><td>GLuint  </td><td><var class="pdparam">program</var>, </td></tr><tr><td> </td><td>GLenum  </td><td><var class="pdparam">shadertype</var>, </td></tr><tr><td> </td><td>GLuint  </td><td><var class="pdparam">index</var>, </td></tr><tr><td> </td><td>GLenum  </td><td><var class="pdparam">pname</var>, </td></tr><tr><td> </td><td>GLint * </td><td><var class="pdparam">values</var><code>)</code>;</td></tr></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>program</code></em></span></dt><dd><p>
                    Specifies the name of the program containing the subroutine.
                </p></dd><dt><span class="term"><em class="parameter"><code>shadertype</code></em></span></dt><dd><p>
                    Specifies the shader stage from which to query for the subroutine parameter. <em class="parameter"><code>shadertype</code></em>
                    must be one of <code class="constant">GL_VERTEX_SHADER</code>, <code class="constant">GL_TESS_CONTROL_SHADER</code>,
                    <code class="constant">GL_TESS_EVALUATION_SHADER</code>, <code class="constant">GL_GEOMETRY_SHADER</code> or
                    <code class="constant">GL_FRAGMENT_SHADER</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>index</code></em></span></dt><dd><p>
                    Specifies the index of the shader subroutine uniform.
                </p></dd><dt><span class="term"><em class="parameter"><code>pname</code></em></span></dt><dd><p>
                    Specifies the parameter of the shader subroutine uniform to query. <em class="parameter"><code>pname</code></em>
                    must be <code class="constant">GL_NUM_COMPATIBLE_SUBROUTINES</code>, <code class="constant">GL_COMPATIBLE_SUBROUTINES</code>,
                    <code class="constant">GL_UNIFORM_SIZE</code> or <code class="constant">GL_UNIFORM_NAME_LENGTH</code>.
                </p></dd><dt><span class="term"><em class="parameter"><code>values</code></em></span></dt><dd><p>
                    Specifies the address of a into which the queried value or values will be placed.
                </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
            <code class="function">glGetActiveSubroutineUniform</code> queries a parameter of an active shader subroutine uniform.
            <em class="parameter"><code>program</code></em> contains the name of the program containing the uniform. <em class="parameter"><code>shadertype</code></em>
            specifies the stage which which the uniform location, given by <em class="parameter"><code>index</code></em>, is valid. <em class="parameter"><code>index</code></em>
            must be between zero and the value of <code class="constant">GL_ACTIVE_SUBROUTINE_UNIFORMS</code> minus one for the
            shader stage.
        </p><p>
            If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_NUM_COMPATIBLE_SUBROUTINES</code>, a single integer indicating the number
            of subroutines that can be assigned to the uniform is returned in <em class="parameter"><code>values</code></em>.
        </p><p>
            If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_COMPATIBLE_SUBROUTINES</code>, an array of integers is returned in
            <em class="parameter"><code>values</code></em>, 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
            <code class="constant">GL_NUM_COMPATIBLE_SUBROUTINES</code>.
        </p><p>
            If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_SIZE</code>, a single integer is returned in <em class="parameter"><code>values</code></em>.
            If the selected subroutine uniform is an array, the  declared size of the array is returned; otherwise, one is returned.
        </p><p>
            If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_NAME_LENGTH</code>, a single integer specifying the length of
            the subroutine uniform name (including the terminating null character) is returned in <em class="parameter"><code>values</code></em>.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
            <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>shadertype</code></em> or <em class="parameter"><code>pname</code></em>
            is not one of the accepted values.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>index</code></em> is greater than or equal to
            the value of <code class="constant">GL_ACTIVE_SUBROUTINES</code>.
        </p><p>
            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>program</code></em> is not the name of an
            existing program object.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="associatedgets"></a><h2>Associated Gets</h2><p>
            <a href="glGetProgramStage.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgramStage</span></span></a> with argument <code class="constant">GL_ACTIVE_SUBROUTINE_UNIFORMS</code>
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
            <a href="glGetSubroutineIndex.xml"><span class="citerefentry"><span class="refentrytitle">glGetSubroutineIndex</span></span></a>,
            <a href="glGetActiveSubroutineUniformName.xml"><span class="citerefentry"><span class="refentrytitle">glGetActiveSubroutineUniformName</span></span></a>,
            <a href="glGetProgramStage.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgramStage</span></span></a>
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
            Copyright <span class="trademark"></span>© 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.
            <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
        </p></div></div></body></html>
