rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man3 / xhtml / glGetActiveUniform.xml
diff --git a/upstream-doc/man3/xhtml/glGetActiveUniform.xml b/upstream-doc/man3/xhtml/glGetActiveUniform.xml
new file mode 100644 (file)
index 0000000..15d6693
--- /dev/null
@@ -0,0 +1,369 @@
+<?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>glGetActiveUniform</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="refentry" title="glGetActiveUniform"><a id="glGetActiveUniform"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glGetActiveUniform — Returns information about an active uniform variable for the specified program object</p></div><div class="refsynopsisdiv" title="C Specification"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">glGetActiveUniform</b>(</code></td><td>GLuint <var class="pdparam">program</var>, </td></tr><tr><td> </td><td>GLuint <var class="pdparam">index</var>, </td></tr><tr><td> </td><td>GLsizei <var class="pdparam">bufSize</var>, </td></tr><tr><td> </td><td>GLsizei *<var class="pdparam">length</var>, </td></tr><tr><td> </td><td>GLint *<var class="pdparam">size</var>, </td></tr><tr><td> </td><td>GLenum *<var class="pdparam">type</var>, </td></tr><tr><td> </td><td>GLchar *<var class="pdparam">name</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Parameters"><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 program object to be
+            queried.</p></dd><dt><span class="term"><em class="parameter"><code>index</code></em></span></dt><dd><p>Specifies the index of the uniform variable to
+            be queried.</p></dd><dt><span class="term"><em class="parameter"><code>bufSize</code></em></span></dt><dd><p>Specifies the maximum number of characters
+            OpenGL is allowed to write in the character buffer
+            indicated by <em class="parameter"><code>name</code></em>.</p></dd><dt><span class="term"><em class="parameter"><code>length</code></em></span></dt><dd><p>Returns the number of characters actually
+            written by OpenGL in the string indicated by
+            <em class="parameter"><code>name</code></em> (excluding the null
+            terminator) if a value other than
+            <code class="constant">NULL</code> is passed.</p></dd><dt><span class="term"><em class="parameter"><code>size</code></em></span></dt><dd><p>Returns the size of the uniform
+            variable.</p></dd><dt><span class="term"><em class="parameter"><code>type</code></em></span></dt><dd><p>Returns the data type of the uniform
+            variable.</p></dd><dt><span class="term"><em class="parameter"><code>name</code></em></span></dt><dd><p>Returns a null terminated string containing
+            the name of the uniform variable.</p></dd></dl></div></div><div class="refsect1" title="Description"><a id="description"></a><h2>Description</h2><p><code class="function">glGetActiveUniform</code> returns
+    information about an active uniform variable in the program
+    object specified by <em class="parameter"><code>program</code></em>. The number
+    of active uniform variables can be obtained by calling
+    <a class="citerefentry" href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
+    with the value <code class="constant">GL_ACTIVE_UNIFORMS</code>. A value
+    of 0 for <em class="parameter"><code>index</code></em> selects the first active
+    uniform variable. Permissible values for
+    <em class="parameter"><code>index</code></em> range from 0 to the number of
+    active uniform variables minus 1.</p><p>Shaders may use either built-in uniform variables,
+    user-defined uniform variables, or both. Built-in uniform
+    variables have a prefix of "gl_" and reference
+    existing OpenGL state or values derived from such state (e.g.,
+    <em class="parameter"><code>gl_DepthRangeParameters</code></em>, see the OpenGL
+    Shading Language specification for a complete list.)
+    User-defined uniform variables have arbitrary names and obtain
+    their values from the application through calls to
+    <a class="citerefentry" href="glUniform.xml"><span class="citerefentry"><span class="refentrytitle">glUniform</span></span></a>.
+    A uniform variable (either built-in or user-defined) is
+    considered active if it is determined during the link operation
+    that it may be accessed during program execution. Therefore,
+    <em class="parameter"><code>program</code></em> should have previously been the
+    target of a call to
+    <a class="citerefentry" href="glLinkProgram.xml"><span class="citerefentry"><span class="refentrytitle">glLinkProgram</span></span></a>,
+    but it is not necessary for it to have been linked
+    successfully.</p><p>The size of the character buffer required to store the
+    longest uniform variable name in <em class="parameter"><code>program</code></em>
+    can be obtained by calling
+    <a class="citerefentry" href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
+    with the value
+    <code class="constant">GL_ACTIVE_UNIFORM_MAX_LENGTH</code>. This value
+    should be used to allocate a buffer of sufficient size to store
+    the returned uniform variable name. The size of this character
+    buffer is passed in <em class="parameter"><code>bufSize</code></em>, and a
+    pointer to this character buffer is passed in
+    <em class="parameter"><code>name.</code></em></p><p><code class="function">glGetActiveUniform</code> returns the name
+    of the uniform variable indicated by
+    <em class="parameter"><code>index</code></em>, storing it in the character buffer
+    specified by <em class="parameter"><code>name</code></em>. The string returned
+    will be null terminated. The actual number of characters written
+    into this buffer is returned in <em class="parameter"><code>length</code></em>,
+    and this count does not include the null termination character.
+    If the length of the returned string is not required, a value of
+    <code class="constant">NULL</code> can be passed in the
+    <em class="parameter"><code>length</code></em> argument.</p><p>The <em class="parameter"><code>type</code></em>
+    argument will return a pointer to the uniform variable's data
+    type. The symbolic constants returned for uniform types are shown in the
+    table below.
+        </p><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left"><span class="bold"><strong>
+                        Returned Symbolic Contant
+                        </strong></span></th><th align="left"><span class="bold"><strong>
+                        Shader Uniform Type
+                        </strong></span></th></tr></thead><tbody><tr><td align="left">
+                            <code class="constant">GL_FLOAT</code>
+                        </td><td align="left">
+                            <code class="constant">float</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_VEC2</code>
+                        </td><td align="left">
+                            <code class="constant">vec2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_VEC3</code>
+                        </td><td align="left">
+                            <code class="constant">vec3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_VEC4</code>
+                        </td><td align="left">
+                            <code class="constant">vec4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT</code>
+                        </td><td align="left">
+                            <code class="constant">int</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_VEC2</code>
+                        </td><td align="left">
+                            <code class="constant">ivec2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_VEC3</code>
+                        </td><td align="left">
+                            <code class="constant">ivec3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_VEC4</code>
+                        </td><td align="left">
+                            <code class="constant">ivec4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT</code>
+                        </td><td align="left">
+                            <code class="constant">unsigned int</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_VEC2</code>
+                        </td><td align="left">
+                            <code class="constant">uvec2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_VEC3</code>
+                        </td><td align="left">
+                            <code class="constant">uvec3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_VEC4</code>
+                        </td><td align="left">
+                            <code class="constant">uvec4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_BOOL</code>
+                        </td><td align="left">
+                            <code class="constant">bool</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_BOOL_VEC2</code>
+                        </td><td align="left">
+                            <code class="constant">bvec2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_BOOL_VEC3</code>
+                        </td><td align="left">
+                            <code class="constant">bvec3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_BOOL_VEC4</code>
+                        </td><td align="left">
+                            <code class="constant">bvec4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT2</code>
+                        </td><td align="left">
+                            <code class="constant">mat2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT3</code>
+                        </td><td align="left">
+                            <code class="constant">mat3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT4</code>
+                        </td><td align="left">
+                            <code class="constant">mat4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT2x3</code>
+                        </td><td align="left">
+                            <code class="constant">mat2x3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT2x4</code>
+                        </td><td align="left">
+                            <code class="constant">mat2x4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT3x2</code>
+                        </td><td align="left">
+                            <code class="constant">mat3x2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT3x4</code>
+                        </td><td align="left">
+                            <code class="constant">mat3x4</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT4x2</code>
+                        </td><td align="left">
+                            <code class="constant">mat4x2</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_FLOAT_MAT4x3</code>
+                        </td><td align="left">
+                            <code class="constant">mat4x3</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_1D</code>
+                        </td><td align="left">
+                            <code class="constant">sampler1D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_3D</code>
+                        </td><td align="left">
+                            <code class="constant">sampler3D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_CUBE</code>
+                        </td><td align="left">
+                            <code class="constant">samplerCube</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_1D_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">sampler1DShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_1D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">sampler1DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_1D_ARRAY_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">sampler1DArrayShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_ARRAY_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DArrayShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_MULTISAMPLE</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DMS</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DMSArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_CUBE_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">samplerCubeShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_BUFFER</code>
+                        </td><td align="left">
+                            <code class="constant">samplerBuffer</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_RECT</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DRect</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_SAMPLER_2D_RECT_SHADOW</code>
+                        </td><td align="left">
+                            <code class="constant">sampler2DRectShadow</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_1D</code>
+                        </td><td align="left">
+                            <code class="constant">isampler1D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_2D</code>
+                        </td><td align="left">
+                            <code class="constant">isampler2D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_3D</code>
+                        </td><td align="left">
+                            <code class="constant">isampler3D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_CUBE</code>
+                        </td><td align="left">
+                            <code class="constant">isamplerCube</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_1D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">isampler1DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_2D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">isampler2DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE</code>
+                        </td><td align="left">
+                            <code class="constant">isampler2DMS</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">isampler2DMSArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_BUFFER</code>
+                        </td><td align="left">
+                            <code class="constant">isamplerBuffer</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_INT_SAMPLER_2D_RECT</code>
+                        </td><td align="left">
+                            <code class="constant">isampler2DRect</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D</code>
+                        </td><td align="left">
+                            <code class="constant">usampler1D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_3D</code>
+                        </td><td align="left">
+                            <code class="constant">usampler3D</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_CUBE</code>
+                        </td><td align="left">
+                            <code class="constant">usamplerCube</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2DArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2DMS</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2DMSArray</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_BUFFER</code>
+                        </td><td align="left">
+                            <code class="constant">usamplerBuffer</code>
+                        </td></tr><tr><td align="left">
+                            <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_RECT</code>
+                        </td><td align="left">
+                            <code class="constant">usampler2DRect</code>
+                        </td></tr></tbody></table></div><p>
+    </p><p>If one or more elements of an array are active, the name
+    of the array is returned in <em class="parameter"><code>name</code></em>, the
+    type is returned in <em class="parameter"><code>type</code></em>, and the
+    <em class="parameter"><code>size</code></em> parameter returns the highest array
+    element index used, plus one, as determined by the compiler
+    and/or linker. Only one active uniform variable will be reported
+    for a uniform array.</p><p>Uniform variables that are declared as structures or
+    arrays of structures will not be returned directly by this
+    function. Instead, each of these uniform variables will be
+    reduced to its fundamental components containing the
+    "." and "[]" operators such that each of the
+    names is valid as an argument to
+    <a class="citerefentry" href="glGetUniformLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniformLocation</span></span></a>.
+    Each of these reduced uniform variables is counted as one active
+    uniform variable and is assigned an index. A valid name cannot
+    be a structure, an array of structures, or a subcomponent of a
+    vector or matrix.</p><p>The size of the uniform variable will be returned in
+    <em class="parameter"><code>size</code></em>. Uniform variables other than arrays
+    will have a size of 1. Structures and arrays of structures will
+    be reduced as described earlier, such that each of the names
+    returned will be a data type in the earlier list. If this
+    reduction results in an array, the size returned will be as
+    described for uniform arrays; otherwise, the size returned will
+    be 1.</p><p>The list of active uniform variables may include both
+    built-in uniform variables (which begin with the prefix
+    "gl_") as well as user-defined uniform variable
+    names.</p><p>This function will return as much information as it can
+    about the specified active uniform variable. If no information
+    is available, <em class="parameter"><code>length</code></em> will be 0, and
+    <em class="parameter"><code>name</code></em> will be an empty string. This
+    situation could occur if this function is called after a link
+    operation that failed. If an error occurs, the return values
+    <em class="parameter"><code>length</code></em>, <em class="parameter"><code>size</code></em>,
+    <em class="parameter"><code>type</code></em>, and <em class="parameter"><code>name</code></em>
+    will be unmodified.</p></div><div class="refsect1" title="Errors"><a id="errors"></a><h2>Errors</h2><p><code class="constant">GL_INVALID_VALUE</code> is generated if
+    <em class="parameter"><code>program</code></em> is not a value generated by
+    OpenGL.</p><p><code class="constant">GL_INVALID_OPERATION</code> is generated if
+    <em class="parameter"><code>program</code></em> is not a program object.</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
+    number of active uniform variables in
+    <em class="parameter"><code>program</code></em>.</p><p><code class="constant">GL_INVALID_VALUE</code> is generated if
+    <em class="parameter"><code>bufSize</code></em> is less than 0.</p></div><div class="refsect1" title="Associated Gets"><a id="associatedgets"></a><h2>Associated Gets</h2><p><a class="citerefentry" href="glGet.xml"><span class="citerefentry"><span class="refentrytitle">glGet</span></span></a>
+    with argument <code class="constant">GL_MAX_VERTEX_UNIFORM_COMPONENTS</code>,
+    <code class="constant">GL_MAX_GEOMETRY_UNIFORM_COMPONENTS</code>,
+    <code class="constant">GL_MAX_FRAGMENT_UNIFORM_COMPONENTS</code>, or
+    <code class="constant">GL_MAX_COMBINED_UNIFORM_COMPONENTS</code>.</p><p><a class="citerefentry" href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
+    with argument <code class="constant">GL_ACTIVE_UNIFORMS</code> or
+    <code class="constant">GL_ACTIVE_UNIFORM_MAX_LENGTH</code>.</p><p><a class="citerefentry" href="glIsProgram.xml"><span class="citerefentry"><span class="refentrytitle">glIsProgram</span></span></a></p></div><div class="refsect1" title="See Also"><a id="seealso"></a><h2>See Also</h2><p><a class="citerefentry" href="glGetUniform.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniform</span></span></a>,
+    <a class="citerefentry" href="glGetUniformLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniformLocation</span></span></a>,
+    <a class="citerefentry" href="glLinkProgram.xml"><span class="citerefentry"><span class="refentrytitle">glLinkProgram</span></span></a>,
+    <a class="citerefentry" href="glUniform.xml"><span class="citerefentry"><span class="refentrytitle">glUniform</span></span></a>,
+    <a class="citerefentry" href="glUseProgram.xml"><span class="citerefentry"><span class="refentrytitle">glUseProgram</span></span></a></p></div><div class="refsect1" title="Copyright"><a id="Copyright"></a><h2>Copyright</h2><p>
+            Copyright <span class="trademark"></span>© 2003-2005 3Dlabs Inc. Ltd.
+            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 class="ulink" href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
+        </p></div></div></body></html>