--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"\r
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">\r
+<refentry id="glGetActiveUniformsiv">\r
+ <refmeta>\r
+ <refentrytitle>glGetActiveUniformsiv</refentrytitle>\r
+ <manvolnum>3G</manvolnum>\r
+ </refmeta>\r
+ <refnamediv>\r
+ <refname>glGetActiveUniformsiv</refname>\r
+ <refpurpose>Returns information about several active uniform variables for the specified program object</refpurpose>\r
+ </refnamediv>\r
+ <refsynopsisdiv><title>C Specification</title>\r
+ <funcsynopsis>\r
+ <funcprototype>\r
+ <funcdef>void <function>glGetActiveUniformsiv</function></funcdef>\r
+ <paramdef>GLuint <parameter>program</parameter></paramdef>\r
+ <paramdef>GLsizei <parameter>uniformCount</parameter></paramdef>\r
+ <paramdef>const GLuint *<parameter>uniformIndices</parameter></paramdef>\r
+ <paramdef>GLenum <parameter>pname</parameter></paramdef>\r
+ <paramdef>GLint *<parameter>params</parameter></paramdef>\r
+ </funcprototype>\r
+ </funcsynopsis>\r
+ </refsynopsisdiv>\r
+ <refsect1 id="parameters"><title>Parameters</title>\r
+ <variablelist>\r
+ <varlistentry>\r
+ <term><parameter>program</parameter></term>\r
+ <listitem>\r
+ <para>Specifies the program object to be queried.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ <varlistentry>\r
+ <term><parameter>uniformCount</parameter></term>\r
+ <listitem>\r
+ <para>Specifies both the number of elements in the array of indices <parameter>uniformIndices</parameter> and the\r
+ number of parameters written to <parameter>params</parameter> upon successful return.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ <varlistentry>\r
+ <term><parameter>uniformIndices</parameter></term>\r
+ <listitem>\r
+ <para>Specifies the address of an array of <parameter>uniformCount</parameter> integers containing the indices of\r
+ uniforms within <parameter>program</parameter> whose parameter <parameter>pname</parameter> pname.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ <varlistentry>\r
+ <term><parameter>pname</parameter></term>\r
+ <listitem>\r
+ <para>Specifies the property of the each uniform in <parameter>uniformIndices</parameter> that should be\r
+ written into the corresponding element of <parameter>params</parameter>.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ <varlistentry>\r
+ <term><parameter>params</parameter></term>\r
+ <listitem>\r
+ <para>Specifies the address of an array of <parameter>uniformCount</parameter> integers which are to\r
+ receive the value of <parameter>pname</parameter> for each uniform in <parameter>uniformIndices</parameter>.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ </variablelist>\r
+ </refsect1>\r
+ <refsect1 id="description"><title>Description</title>\r
+ <para>\r
+ <function>glGetActiveUniformsiv</function> queries the value of the parameter named <parameter>pname</parameter>\r
+ for each of the uniforms within <parameter>program</parameter> whose indices are specified in the array of\r
+ <parameter>uniformCount</parameter> unsigned integers <parameter>uniformIndices</parameter>. Upon success,\r
+ the value of the parameter for each uniform is written into the corresponding entry in the array whose\r
+ address is given in <parameter>params</parameter>. If an error is generated, nothing is written into\r
+ <parameter>params</parameter>.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_TYPE</constant>, then an array identifying the types\r
+ of uniforms specified by the corresponding array of <parameter>uniformIndices</parameter> is returned. The\r
+ returned types can be any of the values from the following table:\r
+ <informaltable frame="topbot">\r
+ <tgroup cols="2" align="left">\r
+ <colspec colwidth="1.1*" />\r
+ <colspec colwidth="1*" />\r
+ <thead>\r
+ <row>\r
+ <entry rowsep="1" align="left"><emphasis role="bold">\r
+ Returned Symbolic Contant\r
+ </emphasis></entry>\r
+ <entry rowsep="1" align="left"><emphasis role="bold">\r
+ Shader Uniform Type\r
+ </emphasis></entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>float</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_VEC2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>vec2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_VEC3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>vec3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_VEC4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>vec4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>int</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_VEC2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>ivec2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_VEC3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>ivec3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_VEC4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>ivec4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>unsigned int</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_VEC2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>uvec2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_VEC3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>uvec3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_VEC4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>uvec4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_BOOL</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>bool</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_BOOL_VEC2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>bvec2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_BOOL_VEC3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>bvec3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_BOOL_VEC4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>bvec4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT2x3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat2x3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT2x4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat2x4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT3x2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat3x2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT3x4</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat3x4</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT4x2</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat4x2</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_FLOAT_MAT4x3</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>mat4x3</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_1D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler1D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_3D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler3D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_CUBE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>samplerCube</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_1D_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler1DShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_1D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler1DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_1D_ARRAY_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler1DArrayShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_ARRAY_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DArrayShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_MULTISAMPLE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DMS</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_MULTISAMPLE_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DMSArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_CUBE_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>samplerCubeShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_BUFFER</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>samplerBuffer</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_RECT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DRect</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_SAMPLER_2D_RECT_SHADOW</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>sampler2DRectShadow</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_1D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler1D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_2D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler2D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_3D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler3D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_CUBE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isamplerCube</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_1D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler1DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_2D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler2DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_2D_MULTISAMPLE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler2DMS</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler2DMSArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_BUFFER</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isamplerBuffer</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_INT_SAMPLER_2D_RECT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>isampler2DRect</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_1D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler1D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_2D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_3D</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler3D</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_CUBE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usamplerCube</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_2D_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2DArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2DMS</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2DMSArray</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_BUFFER</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usamplerBuffer</constant>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry align="left">\r
+ <constant>GL_UNSIGNED_INT_SAMPLER_2D_RECT</constant>\r
+ </entry>\r
+ <entry align="left">\r
+ <constant>usampler2DRect</constant>\r
+ </entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </informaltable>\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_SIZE</constant>, then an array identifying the\r
+ size of the uniforms specified by the corresponding array of <parameter>uniformIndices</parameter> is\r
+ returned. The sizes returned are in units of the type returned by a query of <constant>GL_UNIFORM_TYPE</constant>.\r
+ For active uniforms that are arrays, the size is the number of active elements in the array;\r
+ for all other uniforms, the size is one.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_NAME_LENGTH</constant>, then an array identifying the\r
+ length, including the terminating null character, of the uniform name strings specified by the corresponding\r
+ array of <parameter>uniformIndices</parameter> is returned.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_BLOCK_INDEX</constant>, then an array identifying the\r
+ the uniform block index of each of the uniforms specified by the corresponding array of <parameter>uniformIndices</parameter>\r
+ is returned. The uniform block index of a uniform associated with the default uniform block is -1.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_OFFSET</constant>, then an array of uniform buffer\r
+ offsets is returned. For uniforms in a named uniform block, the returned value will be its offset, in basic\r
+ machine units, relative to the beginning of the uniform block in the buffer object data store. For uniforms\r
+ in the default uniform block, -1 will be returned.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_ARRAY_STRIDE</constant>, then an array identifying the\r
+ stride between elements, in basic machine units, of each of the uniforms specified by the corresponding array of\r
+ <parameter>uniformIndices</parameter> is returned. The stride of a uniform associated with the default uniform\r
+ block is -1. Note that this information only makes sense for uniforms that are arrays. For uniforms that are\r
+ not arrays, but are declared in a named uniform block, an array stride of zero is returned.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_MATRIX_STRIDE</constant>, then an array identifying the stride\r
+ between columns of a column-major matrix or rows of a row-major matrix, in basic machine units, of each of the uniforms\r
+ specified by the corresponding array of <parameter>uniformIndices</parameter> is returned. The matrix stride of a\r
+ uniform associated with the default uniform block is -1. Note that this information only makes sense for uniforms\r
+ that are matrices. For uniforms that are not matrices, but are declared in a named uniform block, a matrix stride of\r
+ zero is returned.\r
+ </para>\r
+ <para>\r
+ If <parameter>pname</parameter> is <constant>GL_UNIFORM_IS_ROW_MAJOR</constant>, then an array identifying whether each\r
+ of the uniforms specified by the corresponding array of <parameter>uniformIndices</parameter> is a row-major matrix or not is returned. A\r
+ value of one indicates a row-major matrix, and a value of zero indicates a column-major matrix, a matrix in the default\r
+ uniform block, or a non-matrix.\r
+ </para>\r
+ </refsect1>\r
+ <refsect1 id="errors"><title>Errors</title>\r
+ <para><constant>GL_INVALID_VALUE</constant> is generated if\r
+ <parameter>program</parameter> is not a value generated by\r
+ OpenGL.</para>\r
+\r
+ <para><constant>GL_INVALID_OPERATION</constant> is generated if\r
+ <parameter>program</parameter> is not a program object.</para>\r
+\r
+ <para><constant>GL_INVALID_VALUE</constant> is generated if\r
+ <parameter>uniformCount</parameter> is greater than or equal to the\r
+ value of <constant>GL_ACTIVE_UNIFORMS</constant> for\r
+ <parameter>program</parameter>.</para>\r
+\r
+ <para><constant>GL_INVALID_ENUM</constant> is generated if <parameter>pname</parameter>\r
+ is not an accepted token.</para>\r
+ </refsect1>\r
+ <refsect1 id="associatedgets"><title>Associated Gets</title>\r
+ <para><citerefentry><refentrytitle>glGet</refentrytitle></citerefentry>\r
+ with argument <constant>GL_MAX_VERTEX_UNIFORM_COMPONENTS</constant>,\r
+ <constant>GL_MAX_GEOMETRY_UNIFORM_COMPONENTS</constant>,\r
+ <constant>GL_MAX_FRAGMENT_UNIFORM_COMPONENTS</constant>, or\r
+ <constant>GL_MAX_COMBINED_UNIFORM_COMPONENTS</constant>.</para>\r
+\r
+ <para><citerefentry><refentrytitle>glGetProgram</refentrytitle></citerefentry>\r
+ with argument <constant>GL_ACTIVE_UNIFORMS</constant> or\r
+ <constant>GL_ACTIVE_UNIFORM_MAX_LENGTH</constant>.</para>\r
+\r
+ <para><citerefentry><refentrytitle>glIsProgram</refentrytitle></citerefentry></para>\r
+ </refsect1>\r
+ <refsect1 id="seealso"><title>See Also</title>\r
+ <para><citerefentry><refentrytitle>glGetUniform</refentrytitle></citerefentry>,\r
+ <citerefentry><refentrytitle>glGetActiveUniform</refentrytitle></citerefentry>,\r
+ <citerefentry><refentrytitle>glGetUniformLocation</refentrytitle></citerefentry>,\r
+ <citerefentry><refentrytitle>glLinkProgram</refentrytitle></citerefentry>,\r
+ <citerefentry><refentrytitle>glUniform</refentrytitle></citerefentry>,\r
+ <citerefentry><refentrytitle>glUseProgram</refentrytitle></citerefentry></para>\r
+ </refsect1>\r
+ <refsect1 id="Copyright"><title>Copyright</title>\r
+ <para>\r
+ Copyright <trademark class="copyright"></trademark> 2011 Khronos Group\r
+ This material may be distributed subject to the terms and conditions set forth in \r
+ the Open Publication License, v 1.0, 8 June 1999.\r
+ <ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.\r
+ </para>\r
+ </refsect1>\r
+</refentry>\r