3acce3b5121c1ba6649072b555b19e679b6ea4f4
[clinton/guile-figl.git] / upstream-man-pages / man2 / glPixelStore.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3 "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4 <refentry id="glPixelStore">
5 <refmeta>
6 <refmetainfo>
7 <copyright>
8 <year>1991-2006</year>
9 <holder>Silicon Graphics, Inc.</holder>
10 </copyright>
11 </refmetainfo>
12 <refentrytitle>glPixelStore</refentrytitle>
13 <manvolnum>3G</manvolnum>
14 </refmeta>
15 <refnamediv>
16 <refname>glPixelStore</refname>
17 <refpurpose>set pixel storage modes</refpurpose>
18 </refnamediv>
19 <refsynopsisdiv><title>C Specification</title>
20 <funcsynopsis>
21 <funcprototype>
22 <funcdef>void <function>glPixelStoref</function></funcdef>
23 <paramdef>GLenum <parameter>pname</parameter></paramdef>
24 <paramdef>GLfloat <parameter>param</parameter></paramdef>
25 </funcprototype>
26 </funcsynopsis>
27 <funcsynopsis>
28 <funcprototype>
29 <funcdef>void <function>glPixelStorei</function></funcdef>
30 <paramdef>GLenum <parameter>pname</parameter></paramdef>
31 <paramdef>GLint <parameter>param</parameter></paramdef>
32 </funcprototype>
33 </funcsynopsis>
34 </refsynopsisdiv>
35 <!-- eqn: ignoring delim $$ -->
36 <refsect1 id="parameters"><title>Parameters</title>
37 <variablelist>
38 <varlistentry>
39 <term><parameter>pname</parameter></term>
40 <listitem>
41 <para>
42 Specifies the symbolic name of the parameter to be set.
43 Six values affect the packing of pixel data into memory:
44 <constant>GL_PACK_SWAP_BYTES</constant>,
45 <constant>GL_PACK_LSB_FIRST</constant>,
46 <constant>GL_PACK_ROW_LENGTH</constant>,
47 <constant>GL_PACK_IMAGE_HEIGHT</constant>,
48 <constant>GL_PACK_SKIP_PIXELS</constant>,
49 <constant>GL_PACK_SKIP_ROWS</constant>,
50 <constant>GL_PACK_SKIP_IMAGES</constant>, and
51 <constant>GL_PACK_ALIGNMENT</constant>.
52 Six more affect the unpacking of pixel data <emphasis>from</emphasis> memory:
53 <constant>GL_UNPACK_SWAP_BYTES</constant>,
54 <constant>GL_UNPACK_LSB_FIRST</constant>,
55 <constant>GL_UNPACK_ROW_LENGTH</constant>,
56 <constant>GL_UNPACK_IMAGE_HEIGHT</constant>,
57 <constant>GL_UNPACK_SKIP_PIXELS</constant>,
58 <constant>GL_UNPACK_SKIP_ROWS</constant>,
59 <constant>GL_UNPACK_SKIP_IMAGES</constant>, and
60 <constant>GL_UNPACK_ALIGNMENT</constant>.
61 </para>
62 </listitem>
63 </varlistentry>
64 <varlistentry>
65 <term><parameter>param</parameter></term>
66 <listitem>
67 <para>
68 Specifies the value that <parameter>pname</parameter> is set to.
69 </para>
70 </listitem>
71 </varlistentry>
72 </variablelist>
73 </refsect1>
74 <refsect1 id="description"><title>Description</title>
75 <para>
76 <function>glPixelStore</function> sets pixel storage modes that affect the operation of subsequent
77 <citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> as well as the unpacking of
78 polygon stipple patterns (see <citerefentry><refentrytitle>glPolygonStipple</refentrytitle></citerefentry>), bitmaps (see
79 <citerefentry><refentrytitle>glBitmap</refentrytitle></citerefentry>), texture patterns (see <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
80 <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
81 <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>).
82 Additionally, if the <code>ARB_imaging</code> extension is supported, pixel
83 storage modes affect convolution filters
84 (see <citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>, and
85 <citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry>, color table (see <citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>, and
86 <citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>, and unpacking histogram (See <citerefentry><refentrytitle>glHistogram</refentrytitle></citerefentry>),
87 and minmax (See <citerefentry><refentrytitle>glMinmax</refentrytitle></citerefentry>) data.
88 </para>
89 <para>
90 <parameter>pname</parameter> is a symbolic constant indicating the parameter to be set, and
91 <parameter>param</parameter> is the new value. Six of the twelve storage parameters affect
92 how pixel data is returned to client memory.
93 They are as follows:
94 </para>
95 <variablelist>
96 <varlistentry>
97 <term><constant>GL_PACK_SWAP_BYTES</constant></term>
98 <listitem>
99 <para>
100 If true,
101 byte ordering for multibyte color components,
102 depth components,
103 color indices,
104 or stencil indices
105 is reversed.
106 That is,
107 if a four-byte component consists of bytes
108 <inlineequation><mml:math>
109 <!-- eqn: b sub 0:-->
110 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
111 <mml:mn>0</mml:mn>
112 </mml:msub>
113 </mml:math></inlineequation>,
114 <inlineequation><mml:math>
115 <!-- eqn: b sub 1:-->
116 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
117 <mml:mn>1</mml:mn>
118 </mml:msub>
119 </mml:math></inlineequation>,
120 <inlineequation><mml:math>
121 <!-- eqn: b sub 2:-->
122 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
123 <mml:mn>2</mml:mn>
124 </mml:msub>
125 </mml:math></inlineequation>,
126 <inlineequation><mml:math>
127 <!-- eqn: b sub 3:-->
128 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
129 <mml:mn>3</mml:mn>
130 </mml:msub>
131 </mml:math></inlineequation>,
132 it is stored in memory as
133 <inlineequation><mml:math>
134 <!-- eqn: b sub 3:-->
135 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
136 <mml:mn>3</mml:mn>
137 </mml:msub>
138 </mml:math></inlineequation>,
139 <inlineequation><mml:math>
140 <!-- eqn: b sub 2:-->
141 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
142 <mml:mn>2</mml:mn>
143 </mml:msub>
144 </mml:math></inlineequation>,
145 <inlineequation><mml:math>
146 <!-- eqn: b sub 1:-->
147 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
148 <mml:mn>1</mml:mn>
149 </mml:msub>
150 </mml:math></inlineequation>,
151 <inlineequation><mml:math>
152 <!-- eqn: b sub 0:-->
153 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
154 <mml:mn>0</mml:mn>
155 </mml:msub>
156 </mml:math></inlineequation>
157 if <constant>GL_PACK_SWAP_BYTES</constant> is true.
158 <constant>GL_PACK_SWAP_BYTES</constant> has no effect on the memory order of components
159 within a pixel,
160 only on the order of bytes within components or indices.
161 For example,
162 the three components of a <constant>GL_RGB</constant> format pixel are always stored with
163 red first,
164 green second,
165 and blue third,
166 regardless of the value of <constant>GL_PACK_SWAP_BYTES</constant>.
167 </para>
168 </listitem>
169 </varlistentry>
170 <varlistentry>
171 <term><constant>GL_PACK_LSB_FIRST</constant></term>
172 <listitem>
173 <para>
174 If true,
175 bits are ordered within a byte from least significant to most significant;
176 otherwise,
177 the first bit in each byte is the most significant one.
178 This parameter is significant for bitmap data only.
179 </para>
180 </listitem>
181 </varlistentry>
182 <varlistentry>
183 <term><constant>GL_PACK_ROW_LENGTH</constant></term>
184 <listitem>
185 <para>
186 If greater than 0,
187 <constant>GL_PACK_ROW_LENGTH</constant> defines the number of pixels in a row.
188 If the first pixel of a row is placed at location
189 <inlineequation><mml:math><mml:mi mathvariant="italic">p</mml:mi></mml:math></inlineequation>
190 in memory,
191 then the location of the first pixel of the next row is obtained by skipping
192 </para>
193 <para>
194 <informalequation><mml:math>
195 <!-- eqn: k = left { lpile { n l above {a over s} left ceiling { s n l } over a right ceiling} lpile {s >= a above s < a }:-->
196 <mml:mrow>
197 <mml:mi mathvariant="italic">k</mml:mi>
198 <mml:mo>=</mml:mo>
199 <mml:mfenced open="{" close="">
200 <mml:mrow>
201 <mml:mtable>
202 <mml:mtr><mml:mtd>
203 <mml:mrow>
204 <mml:mi mathvariant="italic">n</mml:mi>
205 <mml:mo>&it;</mml:mo>
206 <mml:mi mathvariant="italic">l</mml:mi>
207 </mml:mrow>
208 </mml:mtd></mml:mtr>
209 <mml:mtr><mml:mtd>
210 <mml:mrow>
211 <mml:mfenced open="" close="">
212 <mml:mfrac>
213 <mml:mi mathvariant="italic">a</mml:mi>
214 <mml:mi mathvariant="italic">s</mml:mi>
215 </mml:mfrac>
216 </mml:mfenced>
217 <mml:mo>&it;</mml:mo>
218 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
219 <mml:mfrac>
220 <mml:mfenced open="" close="">
221 <mml:mrow>
222 <mml:mi mathvariant="italic">s</mml:mi>
223 <mml:mo>&it;</mml:mo>
224 <mml:mi mathvariant="italic">n</mml:mi>
225 <mml:mo>&it;</mml:mo>
226 <mml:mi mathvariant="italic">l</mml:mi>
227 </mml:mrow>
228 </mml:mfenced>
229 <mml:mi mathvariant="italic">a</mml:mi>
230 </mml:mfrac>
231 </mml:mfenced>
232 </mml:mrow>
233 </mml:mtd></mml:mtr>
234 </mml:mtable>
235 <mml:mo>&it;</mml:mo>
236 <mml:mtable>
237 <mml:mtr><mml:mtd>
238 <mml:mrow>
239 <mml:mi mathvariant="italic">s</mml:mi>
240 <mml:mo>&gt;=</mml:mo>
241 <mml:mi mathvariant="italic">a</mml:mi>
242 </mml:mrow>
243 </mml:mtd></mml:mtr>
244 <mml:mtr><mml:mtd>
245 <mml:mrow>
246 <mml:mi mathvariant="italic">s</mml:mi>
247 <mml:mo>&lt;</mml:mo>
248 <mml:mi mathvariant="italic">a</mml:mi>
249 </mml:mrow>
250 </mml:mtd></mml:mtr>
251 </mml:mtable>
252 </mml:mrow>
253 </mml:mfenced>
254 </mml:mrow>
255 </mml:math></informalequation>
256 </para>
257 <para>
258 components or indices,
259 where
260 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
261 is the number of components or indices in a pixel,
262 <inlineequation><mml:math><mml:mi mathvariant="italic">l</mml:mi></mml:math></inlineequation>
263 is the number of pixels in a row
264 (<constant>GL_PACK_ROW_LENGTH</constant> if it is greater than 0,
265 the
266 <inlineequation><mml:math><mml:mi mathvariant="italic">width</mml:mi></mml:math></inlineequation>
267 argument to the pixel routine otherwise),
268 <inlineequation><mml:math><mml:mi mathvariant="italic">a</mml:mi></mml:math></inlineequation>
269 is the value of <constant>GL_PACK_ALIGNMENT</constant>, and
270 <inlineequation><mml:math><mml:mi mathvariant="italic">s</mml:mi></mml:math></inlineequation>
271 is the size, in bytes, of a single component
272 (if
273 <inlineequation><mml:math>
274 <!-- eqn: a < s:-->
275 <mml:mrow>
276 <mml:mi mathvariant="italic">a</mml:mi>
277 <mml:mo>&lt;</mml:mo>
278 <mml:mi mathvariant="italic">s</mml:mi>
279 </mml:mrow>
280 </mml:math></inlineequation>,
281 then it is as if
282 <inlineequation><mml:math>
283 <!-- eqn: a = s:-->
284 <mml:mrow>
285 <mml:mi mathvariant="italic">a</mml:mi>
286 <mml:mo>=</mml:mo>
287 <mml:mi mathvariant="italic">s</mml:mi>
288 </mml:mrow>
289 </mml:math></inlineequation>).
290 In the case of 1-bit values,
291 the location of the next row is obtained by skipping
292 </para>
293 <para>
294 <inlineequation><mml:math>
295 <!-- eqn: k = 8 a left ceiling { n l } over { 8 a } right ceiling:-->
296 <mml:mrow>
297 <mml:mi mathvariant="italic">k</mml:mi>
298 <mml:mo>=</mml:mo>
299 <mml:mrow>
300 <mml:mn>8</mml:mn>
301 <mml:mo>&it;</mml:mo>
302 <mml:mi mathvariant="italic">a</mml:mi>
303 <mml:mo>&it;</mml:mo>
304 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
305 <mml:mfrac>
306 <mml:mfenced open="" close="">
307 <mml:mrow>
308 <mml:mi mathvariant="italic">n</mml:mi>
309 <mml:mo>&it;</mml:mo>
310 <mml:mi mathvariant="italic">l</mml:mi>
311 </mml:mrow>
312 </mml:mfenced>
313 <mml:mfenced open="" close="">
314 <mml:mrow>
315 <mml:mn>8</mml:mn>
316 <mml:mo>&it;</mml:mo>
317 <mml:mi mathvariant="italic">a</mml:mi>
318 </mml:mrow>
319 </mml:mfenced>
320 </mml:mfrac>
321 </mml:mfenced>
322 </mml:mrow>
323 </mml:mrow>
324 </mml:math></inlineequation>
325 </para>
326 <para>
327 components or indices.
328 </para>
329 <para>
330 The word <emphasis>component</emphasis> in this description refers to the nonindex values
331 red,
332 green,
333 blue,
334 alpha,
335 and depth.
336 Storage format <constant>GL_RGB</constant>,
337 for example,
338 has three components per pixel:
339 first red,
340 then green,
341 and finally blue.
342 </para>
343 </listitem>
344 </varlistentry>
345 <varlistentry>
346 <term><constant>GL_PACK_IMAGE_HEIGHT</constant></term>
347 <listitem>
348 <para>
349 If greater than 0,
350 <constant>GL_PACK_IMAGE_HEIGHT</constant> defines the number of pixels in an image
351 three-dimensional texture volume, where ``image'' is defined by all pixels
352 sharing the same third dimension index.
353 If the first pixel of a row is placed at location
354 <inlineequation><mml:math><mml:mi mathvariant="italic">p</mml:mi></mml:math></inlineequation>
355 in memory,
356 then the location of the first pixel of the next row is obtained by skipping
357 </para>
358 <para>
359 <informalequation><mml:math>
360 <!-- eqn: k = left { lpile { n l h above {a over s} left ceiling { s n l h } over a right ceiling} lpile {s >= a above s < a }:-->
361 <mml:mrow>
362 <mml:mi mathvariant="italic">k</mml:mi>
363 <mml:mo>=</mml:mo>
364 <mml:mfenced open="{" close="">
365 <mml:mrow>
366 <mml:mtable>
367 <mml:mtr><mml:mtd>
368 <mml:mrow>
369 <mml:mi mathvariant="italic">n</mml:mi>
370 <mml:mo>&it;</mml:mo>
371 <mml:mi mathvariant="italic">l</mml:mi>
372 <mml:mo>&it;</mml:mo>
373 <mml:mi mathvariant="italic">h</mml:mi>
374 </mml:mrow>
375 </mml:mtd></mml:mtr>
376 <mml:mtr><mml:mtd>
377 <mml:mrow>
378 <mml:mfenced open="" close="">
379 <mml:mfrac>
380 <mml:mi mathvariant="italic">a</mml:mi>
381 <mml:mi mathvariant="italic">s</mml:mi>
382 </mml:mfrac>
383 </mml:mfenced>
384 <mml:mo>&it;</mml:mo>
385 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
386 <mml:mfrac>
387 <mml:mfenced open="" close="">
388 <mml:mrow>
389 <mml:mi mathvariant="italic">s</mml:mi>
390 <mml:mo>&it;</mml:mo>
391 <mml:mi mathvariant="italic">n</mml:mi>
392 <mml:mo>&it;</mml:mo>
393 <mml:mi mathvariant="italic">l</mml:mi>
394 <mml:mo>&it;</mml:mo>
395 <mml:mi mathvariant="italic">h</mml:mi>
396 </mml:mrow>
397 </mml:mfenced>
398 <mml:mi mathvariant="italic">a</mml:mi>
399 </mml:mfrac>
400 </mml:mfenced>
401 </mml:mrow>
402 </mml:mtd></mml:mtr>
403 </mml:mtable>
404 <mml:mo>&it;</mml:mo>
405 <mml:mtable>
406 <mml:mtr><mml:mtd>
407 <mml:mrow>
408 <mml:mi mathvariant="italic">s</mml:mi>
409 <mml:mo>&gt;=</mml:mo>
410 <mml:mi mathvariant="italic">a</mml:mi>
411 </mml:mrow>
412 </mml:mtd></mml:mtr>
413 <mml:mtr><mml:mtd>
414 <mml:mrow>
415 <mml:mi mathvariant="italic">s</mml:mi>
416 <mml:mo>&lt;</mml:mo>
417 <mml:mi mathvariant="italic">a</mml:mi>
418 </mml:mrow>
419 </mml:mtd></mml:mtr>
420 </mml:mtable>
421 </mml:mrow>
422 </mml:mfenced>
423 </mml:mrow>
424 </mml:math></informalequation>
425 </para>
426 <para>
427 components or indices, where
428 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
429 is the number of components or indices
430 in a pixel,
431 <inlineequation><mml:math><mml:mi mathvariant="italic">l</mml:mi></mml:math></inlineequation>
432 is the number of pixels in a row
433 (<constant>GL_PACK_ROW_LENGTH</constant> if it is greater than 0, the
434 <inlineequation><mml:math><mml:mi mathvariant="italic">width</mml:mi></mml:math></inlineequation>
435 argument to <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry> otherwise),
436 <inlineequation><mml:math><mml:mi mathvariant="italic">h</mml:mi></mml:math></inlineequation>
437 is the number of
438 rows in a pixel image (<constant>GL_PACK_IMAGE_HEIGHT</constant> if it is greater than
439 0, the
440 <inlineequation><mml:math><mml:mi mathvariant="italic">height</mml:mi></mml:math></inlineequation>
441 argument to the <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry> routine otherwise),
442 <inlineequation><mml:math><mml:mi mathvariant="italic">a</mml:mi></mml:math></inlineequation>
443 is the value of
444 <constant>GL_PACK_ALIGNMENT</constant>, and
445 <inlineequation><mml:math><mml:mi mathvariant="italic">s</mml:mi></mml:math></inlineequation>
446 is the size, in bytes, of a single
447 component (if
448 <inlineequation><mml:math>
449 <!-- eqn: a < s:-->
450 <mml:mrow>
451 <mml:mi mathvariant="italic">a</mml:mi>
452 <mml:mo>&lt;</mml:mo>
453 <mml:mi mathvariant="italic">s</mml:mi>
454 </mml:mrow>
455 </mml:math></inlineequation>,
456 then it is as if
457 <inlineequation><mml:math>
458 <!-- eqn: a = s:-->
459 <mml:mrow>
460 <mml:mi mathvariant="italic">a</mml:mi>
461 <mml:mo>=</mml:mo>
462 <mml:mi mathvariant="italic">s</mml:mi>
463 </mml:mrow>
464 </mml:math></inlineequation>).
465 </para>
466 <para>
467 The word <emphasis>component</emphasis> in this description refers to the nonindex values
468 red,
469 green,
470 blue,
471 alpha,
472 and depth.
473 Storage format <constant>GL_RGB</constant>,
474 for example,
475 has three components per pixel:
476 first red,
477 then green,
478 and finally blue.
479 </para>
480 </listitem>
481 </varlistentry>
482 <varlistentry>
483 <term><constant>GL_PACK_SKIP_PIXELS</constant>, <constant>GL_PACK_SKIP_ROWS</constant>, and <constant>GL_PACK_SKIP_IMAGES</constant></term>
484 <listitem>
485 <para>
486 These values are provided as a convenience to the programmer;
487 they provide no functionality that cannot be duplicated simply by
488 incrementing the pointer passed to <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>.
489 Setting <constant>GL_PACK_SKIP_PIXELS</constant> to
490 <inlineequation><mml:math><mml:mi mathvariant="italic">i</mml:mi></mml:math></inlineequation>
491 is equivalent to incrementing
492 the pointer by
493 <inlineequation><mml:math>
494 <!-- eqn: i n:-->
495 <mml:mrow>
496 <mml:mi mathvariant="italic">i</mml:mi>
497 <mml:mo>&it;</mml:mo>
498 <mml:mi mathvariant="italic">n</mml:mi>
499 </mml:mrow>
500 </mml:math></inlineequation>
501 components or indices,
502 where
503 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
504 is the number of components or indices in each pixel.
505 Setting <constant>GL_PACK_SKIP_ROWS</constant> to
506 <inlineequation><mml:math><mml:mi mathvariant="italic">j</mml:mi></mml:math></inlineequation>
507 is equivalent to incrementing
508 the pointer by
509 <inlineequation><mml:math>
510 <!-- eqn: j m:-->
511 <mml:mrow>
512 <mml:mi mathvariant="italic">j</mml:mi>
513 <mml:mo>&it;</mml:mo>
514 <mml:mi mathvariant="italic">m</mml:mi>
515 </mml:mrow>
516 </mml:math></inlineequation>
517 components or indices,
518 where
519 <inlineequation><mml:math><mml:mi mathvariant="italic">m</mml:mi></mml:math></inlineequation>
520 is the number of components or indices per row,
521 as just computed in the <constant>GL_PACK_ROW_LENGTH</constant> section.
522 Setting <constant>GL_PACK_SKIP_IMAGES</constant> to
523 <inlineequation><mml:math><mml:mi mathvariant="italic">k</mml:mi></mml:math></inlineequation>
524 is equivalent to incrementing
525 the pointer by
526 <inlineequation><mml:math>
527 <!-- eqn: k p:-->
528 <mml:mrow>
529 <mml:mi mathvariant="italic">k</mml:mi>
530 <mml:mo>&it;</mml:mo>
531 <mml:mi mathvariant="italic">p</mml:mi>
532 </mml:mrow>
533 </mml:math></inlineequation>,
534 where
535 <inlineequation><mml:math><mml:mi mathvariant="italic">p</mml:mi></mml:math></inlineequation>
536 is the number of components or indices
537 per image, as computed in the <constant>GL_PACK_IMAGE_HEIGHT</constant> section.
538 </para>
539 </listitem>
540 </varlistentry>
541 <varlistentry>
542 <term><constant>GL_PACK_ALIGNMENT</constant></term>
543 <listitem>
544 <para>
545 Specifies the alignment requirements for the start of each pixel row in memory.
546 The allowable values are
547 1 (byte-alignment),
548 2 (rows aligned to even-numbered bytes),
549 4 (word-alignment), and
550 8 (rows start on double-word boundaries).
551 </para>
552 </listitem>
553 </varlistentry>
554 </variablelist>
555 <para>
556 The other six of the twelve storage parameters affect how pixel data is
557 read from client memory.
558 These values are significant for <citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
559 <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
560 <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
561 <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
562 <citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
563 <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>,
564 <citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>,
565 <citerefentry><refentrytitle>glBitmap</refentrytitle></citerefentry>, and
566 <citerefentry><refentrytitle>glPolygonStipple</refentrytitle></citerefentry>.
567 </para>
568 <para>
569 Additionally, if the <code>ARB_imaging</code> extension is supported,
570 <citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
571 <citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
572 <citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
573 <citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>, and
574 <citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry>.
575 They are as follows:
576 </para>
577 <variablelist>
578 <varlistentry>
579 <term><constant>GL_UNPACK_SWAP_BYTES</constant></term>
580 <listitem>
581 <para>
582 If true,
583 byte ordering for multibyte color components,
584 depth components,
585 color indices,
586 or stencil indices
587 is reversed.
588 That is,
589 if a four-byte component consists of bytes
590 <inlineequation><mml:math>
591 <!-- eqn: b sub 0:-->
592 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
593 <mml:mn>0</mml:mn>
594 </mml:msub>
595 </mml:math></inlineequation>,
596 <inlineequation><mml:math>
597 <!-- eqn: b sub 1:-->
598 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
599 <mml:mn>1</mml:mn>
600 </mml:msub>
601 </mml:math></inlineequation>,
602 <inlineequation><mml:math>
603 <!-- eqn: b sub 2:-->
604 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
605 <mml:mn>2</mml:mn>
606 </mml:msub>
607 </mml:math></inlineequation>,
608 <inlineequation><mml:math>
609 <!-- eqn: b sub 3:-->
610 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
611 <mml:mn>3</mml:mn>
612 </mml:msub>
613 </mml:math></inlineequation>,
614 it is taken from memory as
615 <inlineequation><mml:math>
616 <!-- eqn: b sub 3:-->
617 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
618 <mml:mn>3</mml:mn>
619 </mml:msub>
620 </mml:math></inlineequation>,
621 <inlineequation><mml:math>
622 <!-- eqn: b sub 2:-->
623 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
624 <mml:mn>2</mml:mn>
625 </mml:msub>
626 </mml:math></inlineequation>,
627 <inlineequation><mml:math>
628 <!-- eqn: b sub 1:-->
629 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
630 <mml:mn>1</mml:mn>
631 </mml:msub>
632 </mml:math></inlineequation>,
633 <inlineequation><mml:math>
634 <!-- eqn: b sub 0:-->
635 <mml:msub><mml:mi mathvariant="italic">b</mml:mi>
636 <mml:mn>0</mml:mn>
637 </mml:msub>
638 </mml:math></inlineequation>
639 if <constant>GL_UNPACK_SWAP_BYTES</constant> is true.
640 <constant>GL_UNPACK_SWAP_BYTES</constant> has no effect on the memory order of components
641 within a pixel,
642 only on the order of bytes within components or indices.
643 For example,
644 the three components of a <constant>GL_RGB</constant> format pixel are always stored with
645 red first,
646 green second,
647 and blue third,
648 regardless of the value of <constant>GL_UNPACK_SWAP_BYTES</constant>.
649 </para>
650 </listitem>
651 </varlistentry>
652 <varlistentry>
653 <term><constant>GL_UNPACK_LSB_FIRST</constant></term>
654 <listitem>
655 <para>
656 If true,
657 bits are ordered within a byte from least significant to most significant;
658 otherwise,
659 the first bit in each byte is the most significant one.
660 This is relevant only for bitmap data.
661 </para>
662 </listitem>
663 </varlistentry>
664 <varlistentry>
665 <term><constant>GL_UNPACK_ROW_LENGTH</constant></term>
666 <listitem>
667 <para>
668 If greater than 0,
669 <constant>GL_UNPACK_ROW_LENGTH</constant> defines the number of pixels in a row.
670 If the first pixel of a row is placed at location
671 <inlineequation><mml:math><mml:mi mathvariant="italic">p</mml:mi></mml:math></inlineequation>
672 in memory,
673 then the location of the first pixel of the next row is obtained by skipping
674 </para>
675 <para>
676 <informalequation><mml:math>
677 <!-- eqn: k = left { lpile { n l above {a over s} left ceiling { s n l } over a right ceiling } lpile { s >= a above s < a }:-->
678 <mml:mrow>
679 <mml:mi mathvariant="italic">k</mml:mi>
680 <mml:mo>=</mml:mo>
681 <mml:mfenced open="{" close="">
682 <mml:mrow>
683 <mml:mtable>
684 <mml:mtr><mml:mtd>
685 <mml:mrow>
686 <mml:mi mathvariant="italic">n</mml:mi>
687 <mml:mo>&it;</mml:mo>
688 <mml:mi mathvariant="italic">l</mml:mi>
689 </mml:mrow>
690 </mml:mtd></mml:mtr>
691 <mml:mtr><mml:mtd>
692 <mml:mrow>
693 <mml:mfenced open="" close="">
694 <mml:mfrac>
695 <mml:mi mathvariant="italic">a</mml:mi>
696 <mml:mi mathvariant="italic">s</mml:mi>
697 </mml:mfrac>
698 </mml:mfenced>
699 <mml:mo>&it;</mml:mo>
700 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
701 <mml:mfrac>
702 <mml:mfenced open="" close="">
703 <mml:mrow>
704 <mml:mi mathvariant="italic">s</mml:mi>
705 <mml:mo>&it;</mml:mo>
706 <mml:mi mathvariant="italic">n</mml:mi>
707 <mml:mo>&it;</mml:mo>
708 <mml:mi mathvariant="italic">l</mml:mi>
709 </mml:mrow>
710 </mml:mfenced>
711 <mml:mi mathvariant="italic">a</mml:mi>
712 </mml:mfrac>
713 </mml:mfenced>
714 </mml:mrow>
715 </mml:mtd></mml:mtr>
716 </mml:mtable>
717 <mml:mo>&it;</mml:mo>
718 <mml:mtable>
719 <mml:mtr><mml:mtd>
720 <mml:mrow>
721 <mml:mi mathvariant="italic">s</mml:mi>
722 <mml:mo>&gt;=</mml:mo>
723 <mml:mi mathvariant="italic">a</mml:mi>
724 </mml:mrow>
725 </mml:mtd></mml:mtr>
726 <mml:mtr><mml:mtd>
727 <mml:mrow>
728 <mml:mi mathvariant="italic">s</mml:mi>
729 <mml:mo>&lt;</mml:mo>
730 <mml:mi mathvariant="italic">a</mml:mi>
731 </mml:mrow>
732 </mml:mtd></mml:mtr>
733 </mml:mtable>
734 </mml:mrow>
735 </mml:mfenced>
736 </mml:mrow>
737 </mml:math></informalequation>
738 </para>
739 <para>
740 components or indices,
741 where
742 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
743 is the number of components or indices in a pixel,
744 <inlineequation><mml:math><mml:mi mathvariant="italic">l</mml:mi></mml:math></inlineequation>
745 is the number of pixels in a row
746 (<constant>GL_UNPACK_ROW_LENGTH</constant> if it is greater than 0,
747 the
748 <inlineequation><mml:math><mml:mi mathvariant="italic">width</mml:mi></mml:math></inlineequation>
749 argument to the pixel routine otherwise),
750 <inlineequation><mml:math><mml:mi mathvariant="italic">a</mml:mi></mml:math></inlineequation>
751 is the value of <constant>GL_UNPACK_ALIGNMENT</constant>, and
752 <inlineequation><mml:math><mml:mi mathvariant="italic">s</mml:mi></mml:math></inlineequation>
753 is the size, in bytes, of a single component
754 (if
755 <inlineequation><mml:math>
756 <!-- eqn: a < s:-->
757 <mml:mrow>
758 <mml:mi mathvariant="italic">a</mml:mi>
759 <mml:mo>&lt;</mml:mo>
760 <mml:mi mathvariant="italic">s</mml:mi>
761 </mml:mrow>
762 </mml:math></inlineequation>,
763 then it is as if
764 <inlineequation><mml:math>
765 <!-- eqn: a = s:-->
766 <mml:mrow>
767 <mml:mi mathvariant="italic">a</mml:mi>
768 <mml:mo>=</mml:mo>
769 <mml:mi mathvariant="italic">s</mml:mi>
770 </mml:mrow>
771 </mml:math></inlineequation>).
772 In the case of 1-bit values,
773 the location of the next row is obtained by skipping
774 </para>
775 <para>
776 <inlineequation><mml:math>
777 <!-- eqn: k = 8 a left ceiling { n l } over { 8 a } right ceiling:-->
778 <mml:mrow>
779 <mml:mi mathvariant="italic">k</mml:mi>
780 <mml:mo>=</mml:mo>
781 <mml:mrow>
782 <mml:mn>8</mml:mn>
783 <mml:mo>&it;</mml:mo>
784 <mml:mi mathvariant="italic">a</mml:mi>
785 <mml:mo>&it;</mml:mo>
786 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
787 <mml:mfrac>
788 <mml:mfenced open="" close="">
789 <mml:mrow>
790 <mml:mi mathvariant="italic">n</mml:mi>
791 <mml:mo>&it;</mml:mo>
792 <mml:mi mathvariant="italic">l</mml:mi>
793 </mml:mrow>
794 </mml:mfenced>
795 <mml:mfenced open="" close="">
796 <mml:mrow>
797 <mml:mn>8</mml:mn>
798 <mml:mo>&it;</mml:mo>
799 <mml:mi mathvariant="italic">a</mml:mi>
800 </mml:mrow>
801 </mml:mfenced>
802 </mml:mfrac>
803 </mml:mfenced>
804 </mml:mrow>
805 </mml:mrow>
806 </mml:math></inlineequation>
807 </para>
808 <para>
809 components or indices.
810 </para>
811 <para>
812 The word <emphasis>component</emphasis> in this description refers to the nonindex values
813 red,
814 green,
815 blue,
816 alpha,
817 and depth.
818 Storage format <constant>GL_RGB</constant>,
819 for example,
820 has three components per pixel:
821 first red,
822 then green,
823 and finally blue.
824 </para>
825 </listitem>
826 </varlistentry>
827 <varlistentry>
828 <term><constant>GL_UNPACK_IMAGE_HEIGHT</constant></term>
829 <listitem>
830 <para>
831 If greater than 0,
832 <constant>GL_UNPACK_IMAGE_HEIGHT</constant> defines the number of pixels in an image of
833 a three-dimensional texture volume. Where ``image'' is defined by all
834 pixel sharing the same third dimension index.
835 If the first pixel of a row is placed at location
836 <inlineequation><mml:math><mml:mi mathvariant="italic">p</mml:mi></mml:math></inlineequation>
837 in memory,
838 then the location of the first pixel of the next row is obtained by skipping
839 </para>
840 <para>
841 <informalequation><mml:math>
842 <!-- eqn: k = left { lpile { n l h above {a over s} left ceiling { s n l h } over a right ceiling } lpile { s >= a above s < a }:-->
843 <mml:mrow>
844 <mml:mi mathvariant="italic">k</mml:mi>
845 <mml:mo>=</mml:mo>
846 <mml:mfenced open="{" close="">
847 <mml:mrow>
848 <mml:mtable>
849 <mml:mtr><mml:mtd>
850 <mml:mrow>
851 <mml:mi mathvariant="italic">n</mml:mi>
852 <mml:mo>&it;</mml:mo>
853 <mml:mi mathvariant="italic">l</mml:mi>
854 <mml:mo>&it;</mml:mo>
855 <mml:mi mathvariant="italic">h</mml:mi>
856 </mml:mrow>
857 </mml:mtd></mml:mtr>
858 <mml:mtr><mml:mtd>
859 <mml:mrow>
860 <mml:mfenced open="" close="">
861 <mml:mfrac>
862 <mml:mi mathvariant="italic">a</mml:mi>
863 <mml:mi mathvariant="italic">s</mml:mi>
864 </mml:mfrac>
865 </mml:mfenced>
866 <mml:mo>&it;</mml:mo>
867 <mml:mfenced open="&LeftCeiling;" close="&RightCeiling;">
868 <mml:mfrac>
869 <mml:mfenced open="" close="">
870 <mml:mrow>
871 <mml:mi mathvariant="italic">s</mml:mi>
872 <mml:mo>&it;</mml:mo>
873 <mml:mi mathvariant="italic">n</mml:mi>
874 <mml:mo>&it;</mml:mo>
875 <mml:mi mathvariant="italic">l</mml:mi>
876 <mml:mo>&it;</mml:mo>
877 <mml:mi mathvariant="italic">h</mml:mi>
878 </mml:mrow>
879 </mml:mfenced>
880 <mml:mi mathvariant="italic">a</mml:mi>
881 </mml:mfrac>
882 </mml:mfenced>
883 </mml:mrow>
884 </mml:mtd></mml:mtr>
885 </mml:mtable>
886 <mml:mo>&it;</mml:mo>
887 <mml:mtable>
888 <mml:mtr><mml:mtd>
889 <mml:mrow>
890 <mml:mi mathvariant="italic">s</mml:mi>
891 <mml:mo>&gt;=</mml:mo>
892 <mml:mi mathvariant="italic">a</mml:mi>
893 </mml:mrow>
894 </mml:mtd></mml:mtr>
895 <mml:mtr><mml:mtd>
896 <mml:mrow>
897 <mml:mi mathvariant="italic">s</mml:mi>
898 <mml:mo>&lt;</mml:mo>
899 <mml:mi mathvariant="italic">a</mml:mi>
900 </mml:mrow>
901 </mml:mtd></mml:mtr>
902 </mml:mtable>
903 </mml:mrow>
904 </mml:mfenced>
905 </mml:mrow>
906 </mml:math></informalequation>
907 </para>
908 <para>
909 components or indices,
910 where
911 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
912 is the number of components or indices in a pixel,
913 <inlineequation><mml:math><mml:mi mathvariant="italic">l</mml:mi></mml:math></inlineequation>
914 is the number of pixels in a row
915 (<constant>GL_UNPACK_ROW_LENGTH</constant> if it is greater than 0,
916 the
917 <inlineequation><mml:math><mml:mi mathvariant="italic">width</mml:mi></mml:math></inlineequation>
918 argument to <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry> otherwise),
919 <inlineequation><mml:math><mml:mi mathvariant="italic">h</mml:mi></mml:math></inlineequation>
920 is the number of rows in an image (<constant>GL_UNPACK_IMAGE_HEIGHT</constant> if
921 it is greater than 0, the
922 <inlineequation><mml:math><mml:mi mathvariant="italic">height</mml:mi></mml:math></inlineequation>
923 argument to <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry> otherwise),
924 <inlineequation><mml:math><mml:mi mathvariant="italic">a</mml:mi></mml:math></inlineequation>
925 is the value of <constant>GL_UNPACK_ALIGNMENT</constant>, and
926 <inlineequation><mml:math><mml:mi mathvariant="italic">s</mml:mi></mml:math></inlineequation>
927 is the size, in bytes, of a single component
928 (if
929 <inlineequation><mml:math>
930 <!-- eqn: a < s:-->
931 <mml:mrow>
932 <mml:mi mathvariant="italic">a</mml:mi>
933 <mml:mo>&lt;</mml:mo>
934 <mml:mi mathvariant="italic">s</mml:mi>
935 </mml:mrow>
936 </mml:math></inlineequation>,
937 then it is as if
938 <inlineequation><mml:math>
939 <!-- eqn: a = s:-->
940 <mml:mrow>
941 <mml:mi mathvariant="italic">a</mml:mi>
942 <mml:mo>=</mml:mo>
943 <mml:mi mathvariant="italic">s</mml:mi>
944 </mml:mrow>
945 </mml:math></inlineequation>).
946 </para>
947 <para>
948 The word <emphasis>component</emphasis> in this description refers to the nonindex values
949 red,
950 green,
951 blue,
952 alpha,
953 and depth.
954 Storage format <constant>GL_RGB</constant>,
955 for example,
956 has three components per pixel:
957 first red,
958 then green,
959 and finally blue.
960 </para>
961 </listitem>
962 </varlistentry>
963 <varlistentry>
964 <term><constant>GL_UNPACK_SKIP_PIXELS</constant> and <constant>GL_UNPACK_SKIP_ROWS</constant></term>
965 <listitem>
966 <para>
967 These values are provided as a convenience to the programmer;
968 they provide no functionality that cannot be duplicated by
969 incrementing the pointer passed to
970 <citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
971 <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
972 <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
973 <citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
974 <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>,
975 <citerefentry><refentrytitle>glBitmap</refentrytitle></citerefentry>, or
976 <citerefentry><refentrytitle>glPolygonStipple</refentrytitle></citerefentry>.
977 Setting <constant>GL_UNPACK_SKIP_PIXELS</constant> to
978 <inlineequation><mml:math><mml:mi mathvariant="italic">i</mml:mi></mml:math></inlineequation>
979 is equivalent to incrementing
980 the pointer by
981 <inlineequation><mml:math>
982 <!-- eqn: i n:-->
983 <mml:mrow>
984 <mml:mi mathvariant="italic">i</mml:mi>
985 <mml:mo>&it;</mml:mo>
986 <mml:mi mathvariant="italic">n</mml:mi>
987 </mml:mrow>
988 </mml:math></inlineequation>
989 components or indices,
990 where
991 <inlineequation><mml:math><mml:mi mathvariant="italic">n</mml:mi></mml:math></inlineequation>
992 is the number of components or indices in each pixel.
993 Setting <constant>GL_UNPACK_SKIP_ROWS</constant> to
994 <inlineequation><mml:math><mml:mi mathvariant="italic">j</mml:mi></mml:math></inlineequation>
995 is equivalent to incrementing
996 the pointer by
997 <inlineequation><mml:math>
998 <!-- eqn: j k:-->
999 <mml:mrow>
1000 <mml:mi mathvariant="italic">j</mml:mi>
1001 <mml:mo>&it;</mml:mo>
1002 <mml:mi mathvariant="italic">k</mml:mi>
1003 </mml:mrow>
1004 </mml:math></inlineequation>
1005 components or indices,
1006 where
1007 <inlineequation><mml:math><mml:mi mathvariant="italic">k</mml:mi></mml:math></inlineequation>
1008 is the number of components or indices per row,
1009 as just computed in the <constant>GL_UNPACK_ROW_LENGTH</constant> section.
1010 </para>
1011 </listitem>
1012 </varlistentry>
1013 <varlistentry>
1014 <term><constant>GL_UNPACK_ALIGNMENT</constant></term>
1015 <listitem>
1016 <para>
1017 Specifies the alignment requirements for the start of each pixel row in memory.
1018 The allowable values are
1019 1 (byte-alignment),
1020 2 (rows aligned to even-numbered bytes),
1021 4 (word-alignment), and
1022 8 (rows start on double-word boundaries).
1023 </para>
1024 </listitem>
1025 </varlistentry>
1026 </variablelist>
1027 <para>
1028 The following table gives the type,
1029 initial value,
1030 and range of valid values for each storage parameter
1031 that can be set with <function>glPixelStore</function>.
1032 </para>
1033 <para>
1034 </para>
1035 <informaltable frame="topbot">
1036 <tgroup cols="4" align="left">
1037 <colspec colwidth="2.5*" />
1038 <colspec colwidth="1*" align="center"/>
1039 <colspec colwidth="1*" align="center"/>
1040 <colspec colwidth="2*" align="center"/>
1041 <thead>
1042 <row>
1043 <entry rowsep="1" align="left"><emphasis role="bold">
1044 <parameter>pname</parameter>
1045 </emphasis></entry>
1046 <entry rowsep="1" align="center"><emphasis role="bold">
1047 Type
1048 </emphasis></entry>
1049 <entry rowsep="1" align="center"><emphasis role="bold">
1050 Initial Value
1051 </emphasis></entry>
1052 <entry rowsep="1" align="center"><emphasis role="bold">
1053 Valid Range
1054 </emphasis></entry>
1055 </row>
1056 </thead>
1057 <tbody>
1058 <row>
1059 <entry align="left">
1060 <constant>GL_PACK_SWAP_BYTES</constant>
1061 </entry>
1062 <entry align="center">
1063 boolean
1064 </entry>
1065 <entry align="center">
1066 false
1067 </entry>
1068 <entry align="center">
1069 true or false
1070 </entry>
1071 </row>
1072 <row>
1073 <entry align="left">
1074 <constant>GL_PACK_LSB_FIRST</constant>
1075 </entry>
1076 <entry align="center">
1077 boolean
1078 </entry>
1079 <entry align="center">
1080 false
1081 </entry>
1082 <entry align="center">
1083 true or false
1084 </entry>
1085 </row>
1086 <row>
1087 <entry align="left">
1088 <constant>GL_PACK_ROW_LENGTH</constant>
1089 </entry>
1090 <entry align="center">
1091 integer
1092 </entry>
1093 <entry align="center">
1094 0
1095 </entry>
1096 <entry align="center">
1097 <inlineequation><mml:math>
1098 <!-- eqn: left [ 0,\(if right ):-->
1099 <mml:mfenced open="[" close=")">
1100 <mml:mn>0</mml:mn>
1101 <mml:infinity/>
1102 </mml:mfenced>
1103 </mml:math></inlineequation>
1104 </entry>
1105 </row>
1106 <row>
1107 <entry align="left">
1108 <constant>GL_PACK_IMAGE_HEIGHT</constant>
1109 </entry>
1110 <entry align="center">
1111 integer
1112 </entry>
1113 <entry align="center">
1114 0
1115 </entry>
1116 <entry align="center">
1117 <inlineequation><mml:math>
1118 <!-- eqn: left [ 0, \(if right ):-->
1119 <mml:mfenced open="[" close=")">
1120 <mml:mn>0</mml:mn>
1121 <mml:infinity/>
1122 </mml:mfenced>
1123 </mml:math></inlineequation>
1124 </entry>
1125 </row>
1126 <row>
1127 <entry align="left">
1128 <constant>GL_PACK_SKIP_ROWS</constant>
1129 </entry>
1130 <entry align="center">
1131 integer
1132 </entry>
1133 <entry align="center">
1134 0
1135 </entry>
1136 <entry align="center">
1137 <inlineequation><mml:math>
1138 <!-- eqn: left [ 0,\(if right ):-->
1139 <mml:mfenced open="[" close=")">
1140 <mml:mn>0</mml:mn>
1141 <mml:infinity/>
1142 </mml:mfenced>
1143 </mml:math></inlineequation>
1144 </entry>
1145 </row>
1146 <row>
1147 <entry align="left">
1148 <constant>GL_PACK_SKIP_PIXELS</constant>
1149 </entry>
1150 <entry align="center">
1151 integer
1152 </entry>
1153 <entry align="center">
1154 0
1155 </entry>
1156 <entry align="center">
1157 <inlineequation><mml:math>
1158 <!-- eqn: left [ 0,\(if right ):-->
1159 <mml:mfenced open="[" close=")">
1160 <mml:mn>0</mml:mn>
1161 <mml:infinity/>
1162 </mml:mfenced>
1163 </mml:math></inlineequation>
1164 </entry>
1165 </row>
1166 <row>
1167 <entry align="left">
1168 <constant>GL_PACK_SKIP_IMAGES</constant>
1169 </entry>
1170 <entry align="center">
1171 integer
1172 </entry>
1173 <entry align="center">
1174 0
1175 </entry>
1176 <entry align="center">
1177 <inlineequation><mml:math>
1178 <!-- eqn: left [ 0,\(if right ):-->
1179 <mml:mfenced open="[" close=")">
1180 <mml:mn>0</mml:mn>
1181 <mml:infinity/>
1182 </mml:mfenced>
1183 </mml:math></inlineequation>
1184 </entry>
1185 </row>
1186 <row>
1187 <entry align="left">
1188 <constant>GL_PACK_ALIGNMENT</constant>
1189 </entry>
1190 <entry align="center">
1191 integer
1192 </entry>
1193 <entry align="center">
1194 4
1195 </entry>
1196 <entry align="center">
1197 1, 2, 4, or 8
1198 </entry>
1199 </row>
1200 <row>
1201 <entry align="left">
1202 <constant>GL_UNPACK_SWAP_BYTES</constant>
1203 </entry>
1204 <entry align="center">
1205 boolean
1206 </entry>
1207 <entry align="center">
1208 false
1209 </entry>
1210 <entry align="center">
1211 true or false
1212 </entry>
1213 </row>
1214 <row>
1215 <entry align="left">
1216 <constant>GL_UNPACK_LSB_FIRST</constant>
1217 </entry>
1218 <entry align="center">
1219 boolean
1220 </entry>
1221 <entry align="center">
1222 false
1223 </entry>
1224 <entry align="center">
1225 true or false
1226 </entry>
1227 </row>
1228 <row>
1229 <entry align="left">
1230 <constant>GL_UNPACK_ROW_LENGTH</constant>
1231 </entry>
1232 <entry align="center">
1233 integer
1234 </entry>
1235 <entry align="center">
1236 0
1237 </entry>
1238 <entry align="center">
1239 <inlineequation><mml:math>
1240 <!-- eqn: left [ 0,\(if right ):-->
1241 <mml:mfenced open="[" close=")">
1242 <mml:mn>0</mml:mn>
1243 <mml:infinity/>
1244 </mml:mfenced>
1245 </mml:math></inlineequation>
1246 </entry>
1247 </row>
1248 <row>
1249 <entry align="left">
1250 <constant>GL_UNPACK_IMAGE_HEIGHT</constant>
1251 </entry>
1252 <entry align="center">
1253 integer
1254 </entry>
1255 <entry align="center">
1256 0
1257 </entry>
1258 <entry align="center">
1259 <inlineequation><mml:math>
1260 <!-- eqn: left [ 0,\(if right ):-->
1261 <mml:mfenced open="[" close=")">
1262 <mml:mn>0</mml:mn>
1263 <mml:infinity/>
1264 </mml:mfenced>
1265 </mml:math></inlineequation>
1266 </entry>
1267 </row>
1268 <row>
1269 <entry align="left">
1270 <constant>GL_UNPACK_SKIP_ROWS</constant>
1271 </entry>
1272 <entry align="center">
1273 integer
1274 </entry>
1275 <entry align="center">
1276 0
1277 </entry>
1278 <entry align="center">
1279 <inlineequation><mml:math>
1280 <!-- eqn: left [ 0,\(if right ):-->
1281 <mml:mfenced open="[" close=")">
1282 <mml:mn>0</mml:mn>
1283 <mml:infinity/>
1284 </mml:mfenced>
1285 </mml:math></inlineequation>
1286 </entry>
1287 </row>
1288 <row>
1289 <entry align="left">
1290 <constant>GL_UNPACK_SKIP_PIXELS</constant>
1291 </entry>
1292 <entry align="center">
1293 integer
1294 </entry>
1295 <entry align="center">
1296 0
1297 </entry>
1298 <entry align="center">
1299 <inlineequation><mml:math>
1300 <!-- eqn: left [ 0,\(if right ):-->
1301 <mml:mfenced open="[" close=")">
1302 <mml:mn>0</mml:mn>
1303 <mml:infinity/>
1304 </mml:mfenced>
1305 </mml:math></inlineequation>
1306 </entry>
1307 </row>
1308 <row>
1309 <entry align="left">
1310 <constant>GL_UNPACK_SKIP_IMAGES</constant>
1311 </entry>
1312 <entry align="center">
1313 integer
1314 </entry>
1315 <entry align="center">
1316 0
1317 </entry>
1318 <entry align="center">
1319 <inlineequation><mml:math>
1320 <!-- eqn: left [ 0,\(if right ):-->
1321 <mml:mfenced open="[" close=")">
1322 <mml:mn>0</mml:mn>
1323 <mml:infinity/>
1324 </mml:mfenced>
1325 </mml:math></inlineequation>
1326 </entry>
1327 </row>
1328 <row>
1329 <entry align="left">
1330 <constant>GL_UNPACK_ALIGNMENT</constant>
1331 </entry>
1332 <entry align="center">
1333 integer
1334 </entry>
1335 <entry align="center">
1336 4
1337 </entry>
1338 <entry align="center">
1339 1, 2, 4, or 8
1340 </entry>
1341 </row>
1342 </tbody>
1343 </tgroup>
1344 </informaltable>
1345 <para>
1346 <function>glPixelStoref</function> can be used to set any pixel store parameter.
1347 If the parameter type is boolean,
1348 then if <parameter>param</parameter> is 0,
1349 the parameter is false;
1350 otherwise it is set to true.
1351 If <parameter>pname</parameter> is a integer type parameter,
1352 <parameter>param</parameter> is rounded to the nearest integer.
1353 </para>
1354 <para>
1355 Likewise, <function>glPixelStorei</function> can also be used to set any of the
1356 pixel store parameters.
1357 Boolean parameters are set to false if <parameter>param</parameter> is 0 and true otherwise.
1358 </para>
1359 </refsect1>
1360 <refsect1 id="notes"><title>Notes</title>
1361 <para>
1362 The pixel storage modes in effect when
1363 <citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
1364 <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
1365 <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
1366 <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
1367 <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
1368 <citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
1369 <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>,
1370 <citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>,
1371 <citerefentry><refentrytitle>glBitmap</refentrytitle></citerefentry>,
1372 or <citerefentry><refentrytitle>glPolygonStipple</refentrytitle></citerefentry> is placed in a display list control the interpretation
1373 of memory data.
1374 Likewise, if the <code>ARB_imaging</code> extension is supported, the pixel
1375 storage modes in effect when
1376 <citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
1377 <citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
1378 <citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
1379 <citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>, of
1380 <citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry> is placed in a display list control the
1381 interpretation of memory data.
1382 The pixel storage modes in effect when a display list is executed are
1383 not significant.
1384 </para>
1385 <para>
1386 Pixel storage modes are client state and must be pushed and restored
1387 using
1388 <citerefentry><refentrytitle>glPushClientAttrib</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glPopClientAttrib</refentrytitle></citerefentry>.
1389 </para>
1390 </refsect1>
1391 <refsect1 id="errors"><title>Errors</title>
1392 <para>
1393 <constant>GL_INVALID_ENUM</constant> is generated if <parameter>pname</parameter> is not an accepted value.
1394 </para>
1395 <para>
1396 <constant>GL_INVALID_VALUE</constant> is generated if a negative row length,
1397 pixel skip,
1398 or row skip value is specified,
1399 or if alignment is specified as other than 1, 2, 4, or 8.
1400 </para>
1401 <para>
1402 <constant>GL_INVALID_OPERATION</constant> is generated if <function>glPixelStore</function>
1403 is executed between the execution of <citerefentry><refentrytitle>glBegin</refentrytitle></citerefentry>
1404 and the corresponding execution of <citerefentry><refentrytitle>glEnd</refentrytitle></citerefentry>.
1405 </para>
1406 </refsect1>
1407 <refsect1 id="associatedgets"><title>Associated Gets</title>
1408 <para>
1409 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_SWAP_BYTES</constant>
1410 </para>
1411 <para>
1412 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_LSB_FIRST</constant>
1413 </para>
1414 <para>
1415 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_ROW_LENGTH</constant>
1416 </para>
1417 <para>
1418 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_IMAGE_HEIGHT</constant>
1419 </para>
1420 <para>
1421 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_SKIP_ROWS</constant>
1422 </para>
1423 <para>
1424 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_SKIP_PIXELS</constant>
1425 </para>
1426 <para>
1427 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_SKIP_IMAGES</constant>
1428 </para>
1429 <para>
1430 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_PACK_ALIGNMENT</constant>
1431 </para>
1432 <para>
1433 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_SWAP_BYTES</constant>
1434 </para>
1435 <para>
1436 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_LSB_FIRST</constant>
1437 </para>
1438 <para>
1439 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_ROW_LENGTH</constant>
1440 </para>
1441 <para>
1442 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_IMAGE_HEIGHT</constant>
1443 </para>
1444 <para>
1445 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_SKIP_ROWS</constant>
1446 </para>
1447 <para>
1448 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_SKIP_PIXELS</constant>
1449 </para>
1450 <para>
1451 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_SKIP_IMAGES</constant>
1452 </para>
1453 <para>
1454 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_UNPACK_ALIGNMENT</constant>
1455 </para>
1456 </refsect1>
1457 <refsect1 id="seealso"><title>See Also</title>
1458 <para>
1459 <citerefentry><refentrytitle>glBitmap</refentrytitle></citerefentry>,
1460 <citerefentry><refentrytitle>glColorTable</refentrytitle></citerefentry>,
1461 <citerefentry><refentrytitle>glColorSubTable</refentrytitle></citerefentry>,
1462 <citerefentry><refentrytitle>glConvolutionFilter1D</refentrytitle></citerefentry>,
1463 <citerefentry><refentrytitle>glConvolutionFilter2D</refentrytitle></citerefentry>,
1464 <citerefentry><refentrytitle>glSeparableFilter2D</refentrytitle></citerefentry>,
1465 <citerefentry><refentrytitle>glDrawPixels</refentrytitle></citerefentry>,
1466 <citerefentry><refentrytitle>glHistogram</refentrytitle></citerefentry>,
1467 <citerefentry><refentrytitle>glMinmax</refentrytitle></citerefentry>,
1468 <citerefentry><refentrytitle>glPixelMap</refentrytitle></citerefentry>,
1469 <citerefentry><refentrytitle>glPixelTransfer</refentrytitle></citerefentry>,
1470 <citerefentry><refentrytitle>glPixelZoom</refentrytitle></citerefentry>,
1471 <citerefentry><refentrytitle>glPolygonStipple</refentrytitle></citerefentry>,
1472 <citerefentry><refentrytitle>glPushClientAttrib</refentrytitle></citerefentry>,
1473 <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
1474 <citerefentry><refentrytitle>glTexImage1D</refentrytitle></citerefentry>,
1475 <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>,
1476 <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
1477 <citerefentry><refentrytitle>glTexSubImage1D</refentrytitle></citerefentry>,
1478 <citerefentry><refentrytitle>glTexSubImage2D</refentrytitle></citerefentry>,
1479 <citerefentry><refentrytitle>glTexSubImage3D</refentrytitle></citerefentry>
1480 </para>
1481 </refsect1>
1482 <refsect1 id="Copyright"><title>Copyright</title>
1483 <para>
1484 Copyright <trademark class="copyright"></trademark> 1991-2006
1485 Silicon Graphics, Inc. This document is licensed under the SGI
1486 Free Software B License. For details, see
1487 <ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
1488 </para>
1489 </refsect1>
1490 </refentry>