include more low-level bindings
[clinton/guile-figl.git] / upstream-man-pages / man3 / xhtml / glGetActiveUniformsiv.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
3 <!-- saved from url=(0013)about:internet -->
4 <?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>glGetActiveUniformsiv - OpenGL 3.3 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="glGetActiveUniformsiv"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glGetActiveUniformsiv — Returns information about several active uniform variables for the specified program object</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">glGetActiveUniformsiv</b>(</code></td><td>GLuint  </td><td><var class="pdparam">program</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">uniformCount</var>, </td></tr><tr><td> </td><td>const GLuint * </td><td><var class="pdparam">uniformIndices</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">params</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 program object to be queried.</p></dd><dt><span class="term"><em class="parameter"><code>uniformCount</code></em></span></dt><dd><p>Specifies both the number of elements in the array of indices <em class="parameter"><code>uniformIndices</code></em> and the
5 number of parameters written to <em class="parameter"><code>params</code></em> upon successful return.</p></dd><dt><span class="term"><em class="parameter"><code>uniformIndices</code></em></span></dt><dd><p>Specifies the address of an array of <em class="parameter"><code>uniformCount</code></em> integers containing the indices of
6 uniforms within <em class="parameter"><code>program</code></em> whose parameter <em class="parameter"><code>pname</code></em> pname.</p></dd><dt><span class="term"><em class="parameter"><code>pname</code></em></span></dt><dd><p>Specifies the property of the each uniform in <em class="parameter"><code>uniformIndices</code></em> that should be
7 written into the corresponding element of <em class="parameter"><code>params</code></em>.</p></dd><dt><span class="term"><em class="parameter"><code>params</code></em></span></dt><dd><p>Specifies the address of an array of <em class="parameter"><code>uniformCount</code></em> integers which are to
8 receive the value of <em class="parameter"><code>pname</code></em> for each uniform in <em class="parameter"><code>uniformIndices</code></em>.</p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
9 <code class="function">glGetActiveUniformsiv</code> queries the value of the parameter named <em class="parameter"><code>pname</code></em>
10 for each of the uniforms within <em class="parameter"><code>program</code></em> whose indices are specified in the array of
11 <em class="parameter"><code>uniformCount</code></em> unsigned integers <em class="parameter"><code>uniformIndices</code></em>. Upon success,
12 the value of the parameter for each uniform is written into the corresponding entry in the array whose
13 address is given in <em class="parameter"><code>params</code></em>. If an error is generated, nothing is written into
14 <em class="parameter"><code>params</code></em>.
15 </p><p>
16 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_TYPE</code>, then an array identifying the types
17 of uniforms specified by the corresponding array of <em class="parameter"><code>uniformIndices</code></em> is returned. The
18 returned types can be any of the values from the following table:
19 </p><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left"><span class="bold"><strong>
20 Returned Symbolic Contant
21 </strong></span></th><th align="left"><span class="bold"><strong>
22 Shader Uniform Type
23 </strong></span></th></tr></thead><tbody><tr><td align="left">
24 <code class="constant">GL_FLOAT</code>
25 </td><td align="left">
26 <code class="constant">float</code>
27 </td></tr><tr><td align="left">
28 <code class="constant">GL_FLOAT_VEC2</code>
29 </td><td align="left">
30 <code class="constant">vec2</code>
31 </td></tr><tr><td align="left">
32 <code class="constant">GL_FLOAT_VEC3</code>
33 </td><td align="left">
34 <code class="constant">vec3</code>
35 </td></tr><tr><td align="left">
36 <code class="constant">GL_FLOAT_VEC4</code>
37 </td><td align="left">
38 <code class="constant">vec4</code>
39 </td></tr><tr><td align="left">
40 <code class="constant">GL_INT</code>
41 </td><td align="left">
42 <code class="constant">int</code>
43 </td></tr><tr><td align="left">
44 <code class="constant">GL_INT_VEC2</code>
45 </td><td align="left">
46 <code class="constant">ivec2</code>
47 </td></tr><tr><td align="left">
48 <code class="constant">GL_INT_VEC3</code>
49 </td><td align="left">
50 <code class="constant">ivec3</code>
51 </td></tr><tr><td align="left">
52 <code class="constant">GL_INT_VEC4</code>
53 </td><td align="left">
54 <code class="constant">ivec4</code>
55 </td></tr><tr><td align="left">
56 <code class="constant">GL_UNSIGNED_INT</code>
57 </td><td align="left">
58 <code class="constant">unsigned int</code>
59 </td></tr><tr><td align="left">
60 <code class="constant">GL_UNSIGNED_INT_VEC2</code>
61 </td><td align="left">
62 <code class="constant">uvec2</code>
63 </td></tr><tr><td align="left">
64 <code class="constant">GL_UNSIGNED_INT_VEC3</code>
65 </td><td align="left">
66 <code class="constant">uvec3</code>
67 </td></tr><tr><td align="left">
68 <code class="constant">GL_UNSIGNED_INT_VEC4</code>
69 </td><td align="left">
70 <code class="constant">uvec4</code>
71 </td></tr><tr><td align="left">
72 <code class="constant">GL_BOOL</code>
73 </td><td align="left">
74 <code class="constant">bool</code>
75 </td></tr><tr><td align="left">
76 <code class="constant">GL_BOOL_VEC2</code>
77 </td><td align="left">
78 <code class="constant">bvec2</code>
79 </td></tr><tr><td align="left">
80 <code class="constant">GL_BOOL_VEC3</code>
81 </td><td align="left">
82 <code class="constant">bvec3</code>
83 </td></tr><tr><td align="left">
84 <code class="constant">GL_BOOL_VEC4</code>
85 </td><td align="left">
86 <code class="constant">bvec4</code>
87 </td></tr><tr><td align="left">
88 <code class="constant">GL_FLOAT_MAT2</code>
89 </td><td align="left">
90 <code class="constant">mat2</code>
91 </td></tr><tr><td align="left">
92 <code class="constant">GL_FLOAT_MAT3</code>
93 </td><td align="left">
94 <code class="constant">mat3</code>
95 </td></tr><tr><td align="left">
96 <code class="constant">GL_FLOAT_MAT4</code>
97 </td><td align="left">
98 <code class="constant">mat4</code>
99 </td></tr><tr><td align="left">
100 <code class="constant">GL_FLOAT_MAT2x3</code>
101 </td><td align="left">
102 <code class="constant">mat2x3</code>
103 </td></tr><tr><td align="left">
104 <code class="constant">GL_FLOAT_MAT2x4</code>
105 </td><td align="left">
106 <code class="constant">mat2x4</code>
107 </td></tr><tr><td align="left">
108 <code class="constant">GL_FLOAT_MAT3x2</code>
109 </td><td align="left">
110 <code class="constant">mat3x2</code>
111 </td></tr><tr><td align="left">
112 <code class="constant">GL_FLOAT_MAT3x4</code>
113 </td><td align="left">
114 <code class="constant">mat3x4</code>
115 </td></tr><tr><td align="left">
116 <code class="constant">GL_FLOAT_MAT4x2</code>
117 </td><td align="left">
118 <code class="constant">mat4x2</code>
119 </td></tr><tr><td align="left">
120 <code class="constant">GL_FLOAT_MAT4x3</code>
121 </td><td align="left">
122 <code class="constant">mat4x3</code>
123 </td></tr><tr><td align="left">
124 <code class="constant">GL_SAMPLER_1D</code>
125 </td><td align="left">
126 <code class="constant">sampler1D</code>
127 </td></tr><tr><td align="left">
128 <code class="constant">GL_SAMPLER_2D</code>
129 </td><td align="left">
130 <code class="constant">sampler2D</code>
131 </td></tr><tr><td align="left">
132 <code class="constant">GL_SAMPLER_3D</code>
133 </td><td align="left">
134 <code class="constant">sampler3D</code>
135 </td></tr><tr><td align="left">
136 <code class="constant">GL_SAMPLER_CUBE</code>
137 </td><td align="left">
138 <code class="constant">samplerCube</code>
139 </td></tr><tr><td align="left">
140 <code class="constant">GL_SAMPLER_1D_SHADOW</code>
141 </td><td align="left">
142 <code class="constant">sampler1DShadow</code>
143 </td></tr><tr><td align="left">
144 <code class="constant">GL_SAMPLER_2D_SHADOW</code>
145 </td><td align="left">
146 <code class="constant">sampler2DShadow</code>
147 </td></tr><tr><td align="left">
148 <code class="constant">GL_SAMPLER_1D_ARRAY</code>
149 </td><td align="left">
150 <code class="constant">sampler1DArray</code>
151 </td></tr><tr><td align="left">
152 <code class="constant">GL_SAMPLER_2D_ARRAY</code>
153 </td><td align="left">
154 <code class="constant">sampler2DArray</code>
155 </td></tr><tr><td align="left">
156 <code class="constant">GL_SAMPLER_1D_ARRAY_SHADOW</code>
157 </td><td align="left">
158 <code class="constant">sampler1DArrayShadow</code>
159 </td></tr><tr><td align="left">
160 <code class="constant">GL_SAMPLER_2D_ARRAY_SHADOW</code>
161 </td><td align="left">
162 <code class="constant">sampler2DArrayShadow</code>
163 </td></tr><tr><td align="left">
164 <code class="constant">GL_SAMPLER_2D_MULTISAMPLE</code>
165 </td><td align="left">
166 <code class="constant">sampler2DMS</code>
167 </td></tr><tr><td align="left">
168 <code class="constant">GL_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
169 </td><td align="left">
170 <code class="constant">sampler2DMSArray</code>
171 </td></tr><tr><td align="left">
172 <code class="constant">GL_SAMPLER_CUBE_SHADOW</code>
173 </td><td align="left">
174 <code class="constant">samplerCubeShadow</code>
175 </td></tr><tr><td align="left">
176 <code class="constant">GL_SAMPLER_BUFFER</code>
177 </td><td align="left">
178 <code class="constant">samplerBuffer</code>
179 </td></tr><tr><td align="left">
180 <code class="constant">GL_SAMPLER_2D_RECT</code>
181 </td><td align="left">
182 <code class="constant">sampler2DRect</code>
183 </td></tr><tr><td align="left">
184 <code class="constant">GL_SAMPLER_2D_RECT_SHADOW</code>
185 </td><td align="left">
186 <code class="constant">sampler2DRectShadow</code>
187 </td></tr><tr><td align="left">
188 <code class="constant">GL_INT_SAMPLER_1D</code>
189 </td><td align="left">
190 <code class="constant">isampler1D</code>
191 </td></tr><tr><td align="left">
192 <code class="constant">GL_INT_SAMPLER_2D</code>
193 </td><td align="left">
194 <code class="constant">isampler2D</code>
195 </td></tr><tr><td align="left">
196 <code class="constant">GL_INT_SAMPLER_3D</code>
197 </td><td align="left">
198 <code class="constant">isampler3D</code>
199 </td></tr><tr><td align="left">
200 <code class="constant">GL_INT_SAMPLER_CUBE</code>
201 </td><td align="left">
202 <code class="constant">isamplerCube</code>
203 </td></tr><tr><td align="left">
204 <code class="constant">GL_INT_SAMPLER_1D_ARRAY</code>
205 </td><td align="left">
206 <code class="constant">isampler1DArray</code>
207 </td></tr><tr><td align="left">
208 <code class="constant">GL_INT_SAMPLER_2D_ARRAY</code>
209 </td><td align="left">
210 <code class="constant">isampler2DArray</code>
211 </td></tr><tr><td align="left">
212 <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE</code>
213 </td><td align="left">
214 <code class="constant">isampler2DMS</code>
215 </td></tr><tr><td align="left">
216 <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
217 </td><td align="left">
218 <code class="constant">isampler2DMSArray</code>
219 </td></tr><tr><td align="left">
220 <code class="constant">GL_INT_SAMPLER_BUFFER</code>
221 </td><td align="left">
222 <code class="constant">isamplerBuffer</code>
223 </td></tr><tr><td align="left">
224 <code class="constant">GL_INT_SAMPLER_2D_RECT</code>
225 </td><td align="left">
226 <code class="constant">isampler2DRect</code>
227 </td></tr><tr><td align="left">
228 <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D</code>
229 </td><td align="left">
230 <code class="constant">usampler1D</code>
231 </td></tr><tr><td align="left">
232 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D</code>
233 </td><td align="left">
234 <code class="constant">usampler2D</code>
235 </td></tr><tr><td align="left">
236 <code class="constant">GL_UNSIGNED_INT_SAMPLER_3D</code>
237 </td><td align="left">
238 <code class="constant">usampler3D</code>
239 </td></tr><tr><td align="left">
240 <code class="constant">GL_UNSIGNED_INT_SAMPLER_CUBE</code>
241 </td><td align="left">
242 <code class="constant">usamplerCube</code>
243 </td></tr><tr><td align="left">
244 <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</code>
245 </td><td align="left">
246 <code class="constant">usampler2DArray</code>
247 </td></tr><tr><td align="left">
248 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_ARRAY</code>
249 </td><td align="left">
250 <code class="constant">usampler2DArray</code>
251 </td></tr><tr><td align="left">
252 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</code>
253 </td><td align="left">
254 <code class="constant">usampler2DMS</code>
255 </td></tr><tr><td align="left">
256 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
257 </td><td align="left">
258 <code class="constant">usampler2DMSArray</code>
259 </td></tr><tr><td align="left">
260 <code class="constant">GL_UNSIGNED_INT_SAMPLER_BUFFER</code>
261 </td><td align="left">
262 <code class="constant">usamplerBuffer</code>
263 </td></tr><tr><td align="left">
264 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_RECT</code>
265 </td><td align="left">
266 <code class="constant">usampler2DRect</code>
267 </td></tr></tbody></table></div><p>
268 </p><p>
269 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_SIZE</code>, then an array identifying the
270 size of the uniforms specified by the corresponding array of <em class="parameter"><code>uniformIndices</code></em> is
271 returned. The sizes returned are in units of the type returned by a query of <code class="constant">GL_UNIFORM_TYPE</code>.
272 For active uniforms that are arrays, the size is the number of active elements in the array;
273 for all other uniforms, the size is one.
274 </p><p>
275 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_NAME_LENGTH</code>, then an array identifying the
276 length, including the terminating null character, of the uniform name strings specified by the corresponding
277 array of <em class="parameter"><code>uniformIndices</code></em> is returned.
278 </p><p>
279 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_BLOCK_INDEX</code>, then an array identifying the
280 the uniform block index of each of the uniforms specified by the corresponding array of <em class="parameter"><code>uniformIndices</code></em>
281 is returned. The uniform block index of a uniform associated with the default uniform block is -1.
282 </p><p>
283 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_OFFSET</code>, then an array of uniform buffer
284 offsets is returned. For uniforms in a named uniform block, the returned value will be its offset, in basic
285 machine units, relative to the beginning of the uniform block in the buffer object data store. For uniforms
286 in the default uniform block, -1 will be returned.
287 </p><p>
288 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_ARRAY_STRIDE</code>, then an array identifying the
289 stride between elements, in basic machine units, of each of the uniforms specified by the corresponding array of
290 <em class="parameter"><code>uniformIndices</code></em> is returned. The stride of a uniform associated with the default uniform
291 block is -1. Note that this information only makes sense for uniforms that are arrays. For uniforms that are
292 not arrays, but are declared in a named uniform block, an array stride of zero is returned.
293 </p><p>
294 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_MATRIX_STRIDE</code>, then an array identifying the stride
295 between columns of a column-major matrix or rows of a row-major matrix, in basic machine units, of each of the uniforms
296 specified by the corresponding array of <em class="parameter"><code>uniformIndices</code></em> is returned. The matrix stride of a
297 uniform associated with the default uniform block is -1. Note that this information only makes sense for uniforms
298 that are matrices. For uniforms that are not matrices, but are declared in a named uniform block, a matrix stride of
299 zero is returned.
300 </p><p>
301 If <em class="parameter"><code>pname</code></em> is <code class="constant">GL_UNIFORM_IS_ROW_MAJOR</code>, then an array identifying whether each
302 of the uniforms specified by the corresponding array of <em class="parameter"><code>uniformIndices</code></em> is a row-major matrix or not is returned. A
303 value of one indicates a row-major matrix, and a value of zero indicates a column-major matrix, a matrix in the default
304 uniform block, or a non-matrix.
305 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p><code class="constant">GL_INVALID_VALUE</code> is generated if
306 <em class="parameter"><code>program</code></em> is not a value generated by
307 OpenGL.</p><p><code class="constant">GL_INVALID_OPERATION</code> is generated if
308 <em class="parameter"><code>program</code></em> is not a program object.</p><p><code class="constant">GL_INVALID_VALUE</code> is generated if
309 <em class="parameter"><code>uniformCount</code></em> is greater than or equal to the
310 value of <code class="constant">GL_ACTIVE_UNIFORMS</code> for
311 <em class="parameter"><code>program</code></em>.</p><p><code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>pname</code></em>
312 is not an accepted token.</p></div><div class="refsect1" lang="en" xml:lang="en"><a id="associatedgets"></a><h2>Associated Gets</h2><p><a href="glGet.xml"><span class="citerefentry"><span class="refentrytitle">glGet</span></span></a>
313 with argument <code class="constant">GL_MAX_VERTEX_UNIFORM_COMPONENTS</code>,
314 <code class="constant">GL_MAX_GEOMETRY_UNIFORM_COMPONENTS</code>,
315 <code class="constant">GL_MAX_FRAGMENT_UNIFORM_COMPONENTS</code>, or
316 <code class="constant">GL_MAX_COMBINED_UNIFORM_COMPONENTS</code>.</p><p><a href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
317 with argument <code class="constant">GL_ACTIVE_UNIFORMS</code> or
318 <code class="constant">GL_ACTIVE_UNIFORM_MAX_LENGTH</code>.</p><p><a href="glIsProgram.xml"><span class="citerefentry"><span class="refentrytitle">glIsProgram</span></span></a></p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p><a href="glGetUniform.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniform</span></span></a>,
319 <a href="glGetActiveUniform.xml"><span class="citerefentry"><span class="refentrytitle">glGetActiveUniform</span></span></a>,
320 <a href="glGetUniformLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniformLocation</span></span></a>,
321 <a href="glLinkProgram.xml"><span class="citerefentry"><span class="refentrytitle">glLinkProgram</span></span></a>,
322 <a href="glUniform.xml"><span class="citerefentry"><span class="refentrytitle">glUniform</span></span></a>,
323 <a href="glUseProgram.xml"><span class="citerefentry"><span class="refentrytitle">glUseProgram</span></span></a></p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
324 Copyright <span class="trademark"></span>© 2011 Khronos Group
325 This material may be distributed subject to the terms and conditions set forth in
326 the Open Publication License, v 1.0, 8 June 1999.
327 <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
328 </p></div></div></body></html>