rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man4 / xhtml / glGetActiveUniform.xml
CommitLineData
7faf1d71
AW
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>glGetActiveUniform - 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="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"><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">glGetActiveUniform</b>(</code></td><td>GLuint  </td><td><var class="pdparam">program</var>, </td></tr><tr><td> </td><td>GLuint  </td><td><var class="pdparam">index</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">bufSize</var>, </td></tr><tr><td> </td><td>GLsizei * </td><td><var class="pdparam">length</var>, </td></tr><tr><td> </td><td>GLint * </td><td><var class="pdparam">size</var>, </td></tr><tr><td> </td><td>GLenum * </td><td><var class="pdparam">type</var>, </td></tr><tr><td> </td><td>GLchar * </td><td><var class="pdparam">name</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
5 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
6 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
7 OpenGL is allowed to write in the character buffer
8 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
9 written by OpenGL in the string indicated by
10 <em class="parameter"><code>name</code></em> (excluding the null
11 terminator) if a value other than
12 <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
13 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
14 variable.</p></dd><dt><span class="term"><em class="parameter"><code>name</code></em></span></dt><dd><p>Returns a null terminated string containing
15 the name of the uniform variable.</p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p><code class="function">glGetActiveUniform</code> returns
16 information about an active uniform variable in the program
17 object specified by <em class="parameter"><code>program</code></em>. The number
18 of active uniform variables can be obtained by calling
19 <a href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
20 with the value <code class="constant">GL_ACTIVE_UNIFORMS</code>. A value
21 of 0 for <em class="parameter"><code>index</code></em> selects the first active
22 uniform variable. Permissible values for
23 <em class="parameter"><code>index</code></em> range from 0 to the number of
24 active uniform variables minus 1.</p><p>Shaders may use either built-in uniform variables,
25 user-defined uniform variables, or both. Built-in uniform
26 variables have a prefix of "gl_" and reference
27 existing OpenGL state or values derived from such state (e.g.,
28 <em class="parameter"><code>gl_DepthRangeParameters</code></em>, see the OpenGL
29 Shading Language specification for a complete list.)
30 User-defined uniform variables have arbitrary names and obtain
31 their values from the application through calls to
32 <a href="glUniform.xml"><span class="citerefentry"><span class="refentrytitle">glUniform</span></span></a>.
33 A uniform variable (either built-in or user-defined) is
34 considered active if it is determined during the link operation
35 that it may be accessed during program execution. Therefore,
36 <em class="parameter"><code>program</code></em> should have previously been the
37 target of a call to
38 <a href="glLinkProgram.xml"><span class="citerefentry"><span class="refentrytitle">glLinkProgram</span></span></a>,
39 but it is not necessary for it to have been linked
40 successfully.</p><p>The size of the character buffer required to store the
41 longest uniform variable name in <em class="parameter"><code>program</code></em>
42 can be obtained by calling
43 <a href="glGetProgram.xml"><span class="citerefentry"><span class="refentrytitle">glGetProgram</span></span></a>
44 with the value
45 <code class="constant">GL_ACTIVE_UNIFORM_MAX_LENGTH</code>. This value
46 should be used to allocate a buffer of sufficient size to store
47 the returned uniform variable name. The size of this character
48 buffer is passed in <em class="parameter"><code>bufSize</code></em>, and a
49 pointer to this character buffer is passed in
50 <em class="parameter"><code>name.</code></em></p><p><code class="function">glGetActiveUniform</code> returns the name
51 of the uniform variable indicated by
52 <em class="parameter"><code>index</code></em>, storing it in the character buffer
53 specified by <em class="parameter"><code>name</code></em>. The string returned
54 will be null terminated. The actual number of characters written
55 into this buffer is returned in <em class="parameter"><code>length</code></em>,
56 and this count does not include the null termination character.
57 If the length of the returned string is not required, a value of
58 <code class="constant">NULL</code> can be passed in the
59 <em class="parameter"><code>length</code></em> argument.</p><p>The <em class="parameter"><code>type</code></em>
60 argument will return a pointer to the uniform variable's data
61 type. The symbolic constants returned for uniform types are shown in the
62 table below.
63 </p><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left"><span class="bold"><strong>
64 Returned Symbolic Contant
65 </strong></span></th><th align="left"><span class="bold"><strong>
66 Shader Uniform Type
67 </strong></span></th></tr></thead><tbody><tr><td align="left">
68 <code class="constant">GL_FLOAT</code>
69 </td><td align="left">
70 <code class="constant">float</code>
71 </td></tr><tr><td align="left">
72 <code class="constant">GL_FLOAT_VEC2</code>
73 </td><td align="left">
74 <code class="constant">vec2</code>
75 </td></tr><tr><td align="left">
76 <code class="constant">GL_FLOAT_VEC3</code>
77 </td><td align="left">
78 <code class="constant">vec3</code>
79 </td></tr><tr><td align="left">
80 <code class="constant">GL_FLOAT_VEC4</code>
81 </td><td align="left">
82 <code class="constant">vec4</code>
83 </td></tr><tr><td align="left">
84 <code class="constant">GL_DOUBLE</code>
85 </td><td align="left">
86 <code class="constant">double</code>
87 </td></tr><tr><td align="left">
88 <code class="constant">GL_DOUBLE_VEC2</code>
89 </td><td align="left">
90 <code class="constant">dvec2</code>
91 </td></tr><tr><td align="left">
92 <code class="constant">GL_DOUBLE_VEC3</code>
93 </td><td align="left">
94 <code class="constant">dvec3</code>
95 </td></tr><tr><td align="left">
96 <code class="constant">GL_DOUBLE_VEC4</code>
97 </td><td align="left">
98 <code class="constant">dvec4</code>
99 </td></tr><tr><td align="left">
100 <code class="constant">GL_INT</code>
101 </td><td align="left">
102 <code class="constant">int</code>
103 </td></tr><tr><td align="left">
104 <code class="constant">GL_INT_VEC2</code>
105 </td><td align="left">
106 <code class="constant">ivec2</code>
107 </td></tr><tr><td align="left">
108 <code class="constant">GL_INT_VEC3</code>
109 </td><td align="left">
110 <code class="constant">ivec3</code>
111 </td></tr><tr><td align="left">
112 <code class="constant">GL_INT_VEC4</code>
113 </td><td align="left">
114 <code class="constant">ivec4</code>
115 </td></tr><tr><td align="left">
116 <code class="constant">GL_UNSIGNED_INT</code>
117 </td><td align="left">
118 <code class="constant">unsigned int</code>
119 </td></tr><tr><td align="left">
120 <code class="constant">GL_UNSIGNED_INT_VEC2</code>
121 </td><td align="left">
122 <code class="constant">uvec2</code>
123 </td></tr><tr><td align="left">
124 <code class="constant">GL_UNSIGNED_INT_VEC3</code>
125 </td><td align="left">
126 <code class="constant">uvec3</code>
127 </td></tr><tr><td align="left">
128 <code class="constant">GL_UNSIGNED_INT_VEC4</code>
129 </td><td align="left">
130 <code class="constant">uvec4</code>
131 </td></tr><tr><td align="left">
132 <code class="constant">GL_BOOL</code>
133 </td><td align="left">
134 <code class="constant">bool</code>
135 </td></tr><tr><td align="left">
136 <code class="constant">GL_BOOL_VEC2</code>
137 </td><td align="left">
138 <code class="constant">bvec2</code>
139 </td></tr><tr><td align="left">
140 <code class="constant">GL_BOOL_VEC3</code>
141 </td><td align="left">
142 <code class="constant">bvec3</code>
143 </td></tr><tr><td align="left">
144 <code class="constant">GL_BOOL_VEC4</code>
145 </td><td align="left">
146 <code class="constant">bvec4</code>
147 </td></tr><tr><td align="left">
148 <code class="constant">GL_FLOAT_MAT2</code>
149 </td><td align="left">
150 <code class="constant">mat2</code>
151 </td></tr><tr><td align="left">
152 <code class="constant">GL_FLOAT_MAT3</code>
153 </td><td align="left">
154 <code class="constant">mat3</code>
155 </td></tr><tr><td align="left">
156 <code class="constant">GL_FLOAT_MAT4</code>
157 </td><td align="left">
158 <code class="constant">mat4</code>
159 </td></tr><tr><td align="left">
160 <code class="constant">GL_FLOAT_MAT2x3</code>
161 </td><td align="left">
162 <code class="constant">mat2x3</code>
163 </td></tr><tr><td align="left">
164 <code class="constant">GL_FLOAT_MAT2x4</code>
165 </td><td align="left">
166 <code class="constant">mat2x4</code>
167 </td></tr><tr><td align="left">
168 <code class="constant">GL_FLOAT_MAT3x2</code>
169 </td><td align="left">
170 <code class="constant">mat3x2</code>
171 </td></tr><tr><td align="left">
172 <code class="constant">GL_FLOAT_MAT3x4</code>
173 </td><td align="left">
174 <code class="constant">mat3x4</code>
175 </td></tr><tr><td align="left">
176 <code class="constant">GL_FLOAT_MAT4x2</code>
177 </td><td align="left">
178 <code class="constant">mat4x2</code>
179 </td></tr><tr><td align="left">
180 <code class="constant">GL_FLOAT_MAT4x3</code>
181 </td><td align="left">
182 <code class="constant">mat4x3</code>
183 </td></tr><tr><td align="left">
184 <code class="constant">GL_DOUBLE_MAT2</code>
185 </td><td align="left">
186 <code class="constant">dmat2</code>
187 </td></tr><tr><td align="left">
188 <code class="constant">GL_DOUBLE_MAT3</code>
189 </td><td align="left">
190 <code class="constant">dmat3</code>
191 </td></tr><tr><td align="left">
192 <code class="constant">GL_DOUBLE_MAT4</code>
193 </td><td align="left">
194 <code class="constant">dmat4</code>
195 </td></tr><tr><td align="left">
196 <code class="constant">GL_DOUBLE_MAT2x3</code>
197 </td><td align="left">
198 <code class="constant">dmat2x3</code>
199 </td></tr><tr><td align="left">
200 <code class="constant">GL_DOUBLE_MAT2x4</code>
201 </td><td align="left">
202 <code class="constant">dmat2x4</code>
203 </td></tr><tr><td align="left">
204 <code class="constant">GL_DOUBLE_MAT3x2</code>
205 </td><td align="left">
206 <code class="constant">dmat3x2</code>
207 </td></tr><tr><td align="left">
208 <code class="constant">GL_DOUBLE_MAT3x4</code>
209 </td><td align="left">
210 <code class="constant">dmat3x4</code>
211 </td></tr><tr><td align="left">
212 <code class="constant">GL_DOUBLE_MAT4x2</code>
213 </td><td align="left">
214 <code class="constant">dmat4x2</code>
215 </td></tr><tr><td align="left">
216 <code class="constant">GL_DOUBLE_MAT4x3</code>
217 </td><td align="left">
218 <code class="constant">dmat4x3</code>
219 </td></tr><tr><td align="left">
220 <code class="constant">GL_SAMPLER_1D</code>
221 </td><td align="left">
222 <code class="constant">sampler1D</code>
223 </td></tr><tr><td align="left">
224 <code class="constant">GL_SAMPLER_2D</code>
225 </td><td align="left">
226 <code class="constant">sampler2D</code>
227 </td></tr><tr><td align="left">
228 <code class="constant">GL_SAMPLER_3D</code>
229 </td><td align="left">
230 <code class="constant">sampler3D</code>
231 </td></tr><tr><td align="left">
232 <code class="constant">GL_SAMPLER_CUBE</code>
233 </td><td align="left">
234 <code class="constant">samplerCube</code>
235 </td></tr><tr><td align="left">
236 <code class="constant">GL_SAMPLER_1D_SHADOW</code>
237 </td><td align="left">
238 <code class="constant">sampler1DShadow</code>
239 </td></tr><tr><td align="left">
240 <code class="constant">GL_SAMPLER_2D_SHADOW</code>
241 </td><td align="left">
242 <code class="constant">sampler2DShadow</code>
243 </td></tr><tr><td align="left">
244 <code class="constant">GL_SAMPLER_1D_ARRAY</code>
245 </td><td align="left">
246 <code class="constant">sampler1DArray</code>
247 </td></tr><tr><td align="left">
248 <code class="constant">GL_SAMPLER_2D_ARRAY</code>
249 </td><td align="left">
250 <code class="constant">sampler2DArray</code>
251 </td></tr><tr><td align="left">
252 <code class="constant">GL_SAMPLER_1D_ARRAY_SHADOW</code>
253 </td><td align="left">
254 <code class="constant">sampler1DArrayShadow</code>
255 </td></tr><tr><td align="left">
256 <code class="constant">GL_SAMPLER_2D_ARRAY_SHADOW</code>
257 </td><td align="left">
258 <code class="constant">sampler2DArrayShadow</code>
259 </td></tr><tr><td align="left">
260 <code class="constant">GL_SAMPLER_2D_MULTISAMPLE</code>
261 </td><td align="left">
262 <code class="constant">sampler2DMS</code>
263 </td></tr><tr><td align="left">
264 <code class="constant">GL_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
265 </td><td align="left">
266 <code class="constant">sampler2DMSArray</code>
267 </td></tr><tr><td align="left">
268 <code class="constant">GL_SAMPLER_CUBE_SHADOW</code>
269 </td><td align="left">
270 <code class="constant">samplerCubeShadow</code>
271 </td></tr><tr><td align="left">
272 <code class="constant">GL_SAMPLER_BUFFER</code>
273 </td><td align="left">
274 <code class="constant">samplerBuffer</code>
275 </td></tr><tr><td align="left">
276 <code class="constant">GL_SAMPLER_2D_RECT</code>
277 </td><td align="left">
278 <code class="constant">sampler2DRect</code>
279 </td></tr><tr><td align="left">
280 <code class="constant">GL_SAMPLER_2D_RECT_SHADOW</code>
281 </td><td align="left">
282 <code class="constant">sampler2DRectShadow</code>
283 </td></tr><tr><td align="left">
284 <code class="constant">GL_INT_SAMPLER_1D</code>
285 </td><td align="left">
286 <code class="constant">isampler1D</code>
287 </td></tr><tr><td align="left">
288 <code class="constant">GL_INT_SAMPLER_2D</code>
289 </td><td align="left">
290 <code class="constant">isampler2D</code>
291 </td></tr><tr><td align="left">
292 <code class="constant">GL_INT_SAMPLER_3D</code>
293 </td><td align="left">
294 <code class="constant">isampler3D</code>
295 </td></tr><tr><td align="left">
296 <code class="constant">GL_INT_SAMPLER_CUBE</code>
297 </td><td align="left">
298 <code class="constant">isamplerCube</code>
299 </td></tr><tr><td align="left">
300 <code class="constant">GL_INT_SAMPLER_1D_ARRAY</code>
301 </td><td align="left">
302 <code class="constant">isampler1DArray</code>
303 </td></tr><tr><td align="left">
304 <code class="constant">GL_INT_SAMPLER_2D_ARRAY</code>
305 </td><td align="left">
306 <code class="constant">isampler2DArray</code>
307 </td></tr><tr><td align="left">
308 <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE</code>
309 </td><td align="left">
310 <code class="constant">isampler2DMS</code>
311 </td></tr><tr><td align="left">
312 <code class="constant">GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
313 </td><td align="left">
314 <code class="constant">isampler2DMSArray</code>
315 </td></tr><tr><td align="left">
316 <code class="constant">GL_INT_SAMPLER_BUFFER</code>
317 </td><td align="left">
318 <code class="constant">isamplerBuffer</code>
319 </td></tr><tr><td align="left">
320 <code class="constant">GL_INT_SAMPLER_2D_RECT</code>
321 </td><td align="left">
322 <code class="constant">isampler2DRect</code>
323 </td></tr><tr><td align="left">
324 <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D</code>
325 </td><td align="left">
326 <code class="constant">usampler1D</code>
327 </td></tr><tr><td align="left">
328 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D</code>
329 </td><td align="left">
330 <code class="constant">usampler2D</code>
331 </td></tr><tr><td align="left">
332 <code class="constant">GL_UNSIGNED_INT_SAMPLER_3D</code>
333 </td><td align="left">
334 <code class="constant">usampler3D</code>
335 </td></tr><tr><td align="left">
336 <code class="constant">GL_UNSIGNED_INT_SAMPLER_CUBE</code>
337 </td><td align="left">
338 <code class="constant">usamplerCube</code>
339 </td></tr><tr><td align="left">
340 <code class="constant">GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</code>
341 </td><td align="left">
342 <code class="constant">usampler2DArray</code>
343 </td></tr><tr><td align="left">
344 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_ARRAY</code>
345 </td><td align="left">
346 <code class="constant">usampler2DArray</code>
347 </td></tr><tr><td align="left">
348 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</code>
349 </td><td align="left">
350 <code class="constant">usampler2DMS</code>
351 </td></tr><tr><td align="left">
352 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</code>
353 </td><td align="left">
354 <code class="constant">usampler2DMSArray</code>
355 </td></tr><tr><td align="left">
356 <code class="constant">GL_UNSIGNED_INT_SAMPLER_BUFFER</code>
357 </td><td align="left">
358 <code class="constant">usamplerBuffer</code>
359 </td></tr><tr><td align="left">
360 <code class="constant">GL_UNSIGNED_INT_SAMPLER_2D_RECT</code>
361 </td><td align="left">
362 <code class="constant">usampler2DRect</code>
363 </td></tr><tr><td align="left">
364 <code class="constant">GL_IMAGE_1D</code>
365 </td><td align="left">
366 <code class="constant">image1D</code>
367 </td></tr><tr><td align="left">
368 <code class="constant">GL_IMAGE_2D</code>
369 </td><td align="left">
370 <code class="constant">image2D</code>
371 </td></tr><tr><td align="left">
372 <code class="constant">GL_IMAGE_3D</code>
373 </td><td align="left">
374 <code class="constant">image3D</code>
375 </td></tr><tr><td align="left">
376 <code class="constant">GL_IMAGE_2D_RECT</code>
377 </td><td align="left">
378 <code class="constant">image2DRect</code>
379 </td></tr><tr><td align="left">
380 <code class="constant">GL_IMAGE_CUBE</code>
381 </td><td align="left">
382 <code class="constant">imageCube</code>
383 </td></tr><tr><td align="left">
384 <code class="constant">GL_IMAGE_BUFFER</code>
385 </td><td align="left">
386 <code class="constant">imageBuffer</code>
387 </td></tr><tr><td align="left">
388 <code class="constant">GL_IMAGE_1D_ARRAY</code>
389 </td><td align="left">
390 <code class="constant">image1DArray</code>
391 </td></tr><tr><td align="left">
392 <code class="constant">GL_IMAGE_2D_ARRAY</code>
393 </td><td align="left">
394 <code class="constant">image2DArray</code>
395 </td></tr><tr><td align="left">
396 <code class="constant">GL_IMAGE_2D_MULTISAMPLE</code>
397 </td><td align="left">
398 <code class="constant">image2DMS</code>
399 </td></tr><tr><td align="left">
400 <code class="constant">GL_IMAGE_2D_MULTISAMPLE_ARRAY</code>
401 </td><td align="left">
402 <code class="constant">image2DMSArray</code>
403 </td></tr><tr><td align="left">
404 <code class="constant">GL_INT_IMAGE_1D</code>
405 </td><td align="left">
406 <code class="constant">iimage1D</code>
407 </td></tr><tr><td align="left">
408 <code class="constant">GL_INT_IMAGE_2D</code>
409 </td><td align="left">
410 <code class="constant">iimage2D</code>
411 </td></tr><tr><td align="left">
412 <code class="constant">GL_INT_IMAGE_3D</code>
413 </td><td align="left">
414 <code class="constant">iimage3D</code>
415 </td></tr><tr><td align="left">
416 <code class="constant">GL_INT_IMAGE_2D_RECT</code>
417 </td><td align="left">
418 <code class="constant">iimage2DRect</code>
419 </td></tr><tr><td align="left">
420 <code class="constant">GL_INT_IMAGE_CUBE</code>
421 </td><td align="left">
422 <code class="constant">iimageCube</code>
423 </td></tr><tr><td align="left">
424 <code class="constant">GL_INT_IMAGE_BUFFER</code>
425 </td><td align="left">
426 <code class="constant">iimageBuffer</code>
427 </td></tr><tr><td align="left">
428 <code class="constant">GL_INT_IMAGE_1D_ARRAY</code>
429 </td><td align="left">
430 <code class="constant">iimage1DArray</code>
431 </td></tr><tr><td align="left">
432 <code class="constant">GL_INT_IMAGE_2D_ARRAY</code>
433 </td><td align="left">
434 <code class="constant">iimage2DArray</code>
435 </td></tr><tr><td align="left">
436 <code class="constant">GL_INT_IMAGE_2D_MULTISAMPLE</code>
437 </td><td align="left">
438 <code class="constant">iimage2DMS</code>
439 </td></tr><tr><td align="left">
440 <code class="constant">GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY</code>
441 </td><td align="left">
442 <code class="constant">iimage2DMSArray</code>
443 </td></tr><tr><td align="left">
444 <code class="constant">GL_UNSIGNED_INT_IMAGE_1D</code>
445 </td><td align="left">
446 <code class="constant">uimage1D</code>
447 </td></tr><tr><td align="left">
448 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D</code>
449 </td><td align="left">
450 <code class="constant">uimage2D</code>
451 </td></tr><tr><td align="left">
452 <code class="constant">GL_UNSIGNED_INT_IMAGE_3D</code>
453 </td><td align="left">
454 <code class="constant">uimage3D</code>
455 </td></tr><tr><td align="left">
456 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_RECT</code>
457 </td><td align="left">
458 <code class="constant">uimage2DRect</code>
459 </td></tr><tr><td align="left">
460 <code class="constant">GL_UNSIGNED_INT_IMAGE_CUBE</code>
461 </td><td align="left">
462 <code class="constant">uimageCube</code>
463 </td></tr><tr><td align="left">
464 <code class="constant">GL_UNSIGNED_INT_IMAGE_BUFFER</code>
465 </td><td align="left">
466 <code class="constant">uimageBuffer</code>
467 </td></tr><tr><td align="left">
468 <code class="constant">GL_UNSIGNED_INT_IMAGE_1D_ARRAY</code>
469 </td><td align="left">
470 <code class="constant">uimage1DArray</code>
471 </td></tr><tr><td align="left">
472 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_ARRAY</code>
473 </td><td align="left">
474 <code class="constant">uimage2DArray</code>
475 </td></tr><tr><td align="left">
476 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE</code>
477 </td><td align="left">
478 <code class="constant">uimage2DMS</code>
479 </td></tr><tr><td align="left">
480 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY</code>
481 </td><td align="left">
482 <code class="constant">uimage2DMSArray</code>
483 </td></tr><tr><td align="left">
484 <code class="constant">GL_UNSIGNED_INT_ATOMIC_COUNTER</code>
485 </td><td align="left">
486 <code class="constant">atomic_uint</code>
487 </td></tr></tbody></table></div><p>
488 </p><p>If one or more elements of an array are active, the name
489 of the array is returned in <em class="parameter"><code>name</code></em>, the
490 type is returned in <em class="parameter"><code>type</code></em>, and the
491 <em class="parameter"><code>size</code></em> parameter returns the highest array
492 element index used, plus one, as determined by the compiler
493 and/or linker. Only one active uniform variable will be reported
494 for a uniform array.</p><p>Uniform variables that are declared as structures or
495 arrays of structures will not be returned directly by this
496 function. Instead, each of these uniform variables will be
497 reduced to its fundamental components containing the
498 "." and "[]" operators such that each of the
499 names is valid as an argument to
500 <a href="glGetUniformLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniformLocation</span></span></a>.
501 Each of these reduced uniform variables is counted as one active
502 uniform variable and is assigned an index. A valid name cannot
503 be a structure, an array of structures, or a subcomponent of a
504 vector or matrix.</p><p>The size of the uniform variable will be returned in
505 <em class="parameter"><code>size</code></em>. Uniform variables other than arrays
506 will have a size of 1. Structures and arrays of structures will
507 be reduced as described earlier, such that each of the names
508 returned will be a data type in the earlier list. If this
509 reduction results in an array, the size returned will be as
510 described for uniform arrays; otherwise, the size returned will
511 be 1.</p><p>The list of active uniform variables may include both
512 built-in uniform variables (which begin with the prefix
513 "gl_") as well as user-defined uniform variable
514 names.</p><p>This function will return as much information as it can
515 about the specified active uniform variable. If no information
516 is available, <em class="parameter"><code>length</code></em> will be 0, and
517 <em class="parameter"><code>name</code></em> will be an empty string. This
518 situation could occur if this function is called after a link
519 operation that failed. If an error occurs, the return values
520 <em class="parameter"><code>length</code></em>, <em class="parameter"><code>size</code></em>,
521 <em class="parameter"><code>type</code></em>, and <em class="parameter"><code>name</code></em>
522 will be unmodified.</p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
523 The double types, <code class="constant">GL_DOUBLE</code>, <code class="constant">GL_DOUBLE_VEC2</code>,
524 <code class="constant">GL_DOUBLE_VEC3</code>, <code class="constant">GL_DOUBLE_VEC4</code>,
525 <code class="constant">GL_DOUBLE_MAT2</code>, <code class="constant">GL_DOUBLE_MAT3</code>,
526 <code class="constant">GL_DOUBLE_MAT4</code>, <code class="constant">GL_DOUBLE_MAT2x3</code>,
527 <code class="constant">GL_DOUBLE_MAT2x4</code>, <code class="constant">GL_DOUBLE_MAT3x2</code>,
528 <code class="constant">GL_DOUBLE_MAT3x4</code>, <code class="constant">GL_DOUBLE_MAT4x2</code>,
529 and <code class="constant">GL_DOUBLE_MAT4x3</code> are only available if the GL
530 version is 4.1 or higher.
531 </p><p>
532 The image types,
533 <code class="constant">GL_IMAGE_1D</code>,
534 <code class="constant">GL_IMAGE_2D</code>,
535 <code class="constant">GL_IMAGE_3D</code>,
536 <code class="constant">GL_IMAGE_2D_RECT</code>,
537 <code class="constant">GL_IMAGE_CUBE</code>,
538 <code class="constant">GL_IMAGE_BUFFER</code>,
539 <code class="constant">GL_IMAGE_1D_ARRAY</code>,
540 <code class="constant">GL_IMAGE_2D_ARRAY</code>,
541 <code class="constant">GL_IMAGE_2D_MULTISAMPLE</code>,
542 <code class="constant">GL_IMAGE_2D_MULTISAMPLE_ARRAY</code>,
543 <code class="constant">GL_INT_IMAGE_1D</code>,
544 <code class="constant">GL_INT_IMAGE_2D</code>,
545 <code class="constant">GL_INT_IMAGE_3D</code>,
546 <code class="constant">GL_INT_IMAGE_2D_RECT</code>,
547 <code class="constant">GL_INT_IMAGE_CUBE</code>,
548 <code class="constant">GL_INT_IMAGE_BUFFER</code>,
549 <code class="constant">GL_INT_IMAGE_1D_ARRAY</code>,
550 <code class="constant">GL_INT_IMAGE_2D_ARRAY</code>,
551 <code class="constant">GL_INT_IMAGE_2D_MULTISAMPLE</code>,
552 <code class="constant">GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY</code>,
553 <code class="constant">GL_UNSIGNED_INT_IMAGE_1D</code>,
554 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D</code>,
555 <code class="constant">GL_UNSIGNED_INT_IMAGE_3D</code>,
556 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_RECT</code>,
557 <code class="constant">GL_UNSIGNED_INT_IMAGE_CUBE</code>,
558 <code class="constant">GL_UNSIGNED_INT_IMAGE_BUFFER</code>,
559 <code class="constant">GL_UNSIGNED_INT_IMAGE_1D_ARRAY</code>,
560 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_ARRAY</code>,
561 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE</code>,
562 <code class="constant">GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY</code>,
563 and the atomic counter type,
564 <code class="constant">GL_UNSIGNED_INT_ATOMIC_COUNTER</code>
565 are only available if the GL
566 version is 4.2 or higher.
567 </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
568 <em class="parameter"><code>program</code></em> is not a value generated by
569 OpenGL.</p><p><code class="constant">GL_INVALID_OPERATION</code> is generated if
570 <em class="parameter"><code>program</code></em> is not a program object.</p><p><code class="constant">GL_INVALID_VALUE</code> is generated if
571 <em class="parameter"><code>index</code></em> is greater than or equal to the
572 number of active uniform variables in
573 <em class="parameter"><code>program</code></em>.</p><p><code class="constant">GL_INVALID_VALUE</code> is generated if
574 <em class="parameter"><code>bufSize</code></em> is less than 0.</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>
575 with argument <code class="constant">GL_MAX_VERTEX_UNIFORM_COMPONENTS</code>,
576 <code class="constant">GL_MAX_GEOMETRY_UNIFORM_COMPONENTS</code>,
577 <code class="constant">GL_MAX_FRAGMENT_UNIFORM_COMPONENTS</code>, or
578 <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>
579 with argument <code class="constant">GL_ACTIVE_UNIFORMS</code> or
580 <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>,
581 <a href="glGetUniformLocation.xml"><span class="citerefentry"><span class="refentrytitle">glGetUniformLocation</span></span></a>,
582 <a href="glLinkProgram.xml"><span class="citerefentry"><span class="refentrytitle">glLinkProgram</span></span></a>,
583 <a href="glUniform.xml"><span class="citerefentry"><span class="refentrytitle">glUniform</span></span></a>,
584 <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>
585 Copyright <span class="trademark"></span>© 2003-2005 3Dlabs Inc. Ltd.
586 Copyright <span class="trademark"></span>© 2010 Khronos Group
587 This material may be distributed subject to the terms and conditions set forth in
588 the Open Publication License, v 1.0, 8 June 1999.
589 <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
590 </p></div></div></body></html>