c23147801923a719729658faa6d57c28e5a4061e
[clinton/guile-figl.git] / upstream-man-pages / man2 / xhtml / glTexImage3D.xml
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
2 <!-- saved from url=(0013)about:internet -->
3 <?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" /><title>glTexImage3D</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glTexImage3D"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glTexImage3D — specify a three-dimensional texture image</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">glTexImage3D</b>(</code></td><td>GLenum  </td><td><var class="pdparam">target</var>, </td></tr><tr><td> </td><td>GLint  </td><td><var class="pdparam">level</var>, </td></tr><tr><td> </td><td>GLint  </td><td><var class="pdparam">internalFormat</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">width</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">height</var>, </td></tr><tr><td> </td><td>GLsizei  </td><td><var class="pdparam">depth</var>, </td></tr><tr><td> </td><td>GLint  </td><td><var class="pdparam">border</var>, </td></tr><tr><td> </td><td>GLenum  </td><td><var class="pdparam">format</var>, </td></tr><tr><td> </td><td>GLenum  </td><td><var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const GLvoid *  </td><td><var class="pdparam">data</var><code>)</code>;</td></tr></table></div></div><p>
4 </p><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>target</code></em></span></dt><dd><p>
5 Specifies the target texture.
6 Must be <code class="constant">GL_TEXTURE_3D</code> or <code class="constant">GL_PROXY_TEXTURE_3D</code>.
7 </p></dd><dt><span class="term"><em class="parameter"><code>level</code></em></span></dt><dd><p>
8 Specifies the level-of-detail number.
9 Level 0 is the base image level.
10 Level
11 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mml:mi mathvariant="italic">n</mml:mi></mml:math>
12 is the
13 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
14
15 <mml:msup><mml:mi mathvariant="italic">n</mml:mi>
16 <mml:mi mathvariant="italic">th</mml:mi>
17 </mml:msup>
18 </mml:math>
19 mipmap reduction image.
20 </p></dd><dt><span class="term"><em class="parameter"><code>internalFormat</code></em></span></dt><dd><p>
21 Specifies the number of color components in the texture.
22 Must be 1, 2, 3, or 4, or one of the following symbolic constants:
23 <code class="constant">GL_ALPHA</code>,
24 <code class="constant">GL_ALPHA4</code>,
25 <code class="constant">GL_ALPHA8</code>,
26 <code class="constant">GL_ALPHA12</code>,
27 <code class="constant">GL_ALPHA16</code>,
28 <code class="constant">GL_COMPRESSED_ALPHA</code>,
29 <code class="constant">GL_COMPRESSED_LUMINANCE</code>,
30 <code class="constant">GL_COMPRESSED_LUMINANCE_ALPHA</code>,
31 <code class="constant">GL_COMPRESSED_INTENSITY</code>,
32 <code class="constant">GL_COMPRESSED_RGB</code>,
33 <code class="constant">GL_COMPRESSED_RGBA</code>,
34 <code class="constant">GL_LUMINANCE</code>,
35 <code class="constant">GL_LUMINANCE4</code>,
36 <code class="constant">GL_LUMINANCE8</code>,
37 <code class="constant">GL_LUMINANCE12</code>,
38 <code class="constant">GL_LUMINANCE16</code>,
39 <code class="constant">GL_LUMINANCE_ALPHA</code>,
40 <code class="constant">GL_LUMINANCE4_ALPHA4</code>,
41 <code class="constant">GL_LUMINANCE6_ALPHA2</code>,
42 <code class="constant">GL_LUMINANCE8_ALPHA8</code>,
43 <code class="constant">GL_LUMINANCE12_ALPHA4</code>,
44 <code class="constant">GL_LUMINANCE12_ALPHA12</code>,
45 <code class="constant">GL_LUMINANCE16_ALPHA16</code>,
46 <code class="constant">GL_INTENSITY</code>,
47 <code class="constant">GL_INTENSITY4</code>,
48 <code class="constant">GL_INTENSITY8</code>,
49 <code class="constant">GL_INTENSITY12</code>,
50 <code class="constant">GL_INTENSITY16</code>,
51 <code class="constant">GL_R3_G3_B2</code>,
52 <code class="constant">GL_RGB</code>,
53 <code class="constant">GL_RGB4</code>,
54 <code class="constant">GL_RGB5</code>,
55 <code class="constant">GL_RGB8</code>,
56 <code class="constant">GL_RGB10</code>,
57 <code class="constant">GL_RGB12</code>,
58 <code class="constant">GL_RGB16</code>,
59 <code class="constant">GL_RGBA</code>,
60 <code class="constant">GL_RGBA2</code>,
61 <code class="constant">GL_RGBA4</code>,
62 <code class="constant">GL_RGB5_A1</code>,
63 <code class="constant">GL_RGBA8</code>,
64 <code class="constant">GL_RGB10_A2</code>,
65 <code class="constant">GL_RGBA12</code>,
66 <code class="constant">GL_RGBA16</code>,
67 <code class="constant">GL_SLUMINANCE</code>,
68 <code class="constant">GL_SLUMINANCE8</code>,
69 <code class="constant">GL_SLUMINANCE_ALPHA</code>,
70 <code class="constant">GL_SLUMINANCE8_ALPHA8</code>,
71 <code class="constant">GL_SRGB</code>,
72 <code class="constant">GL_SRGB8</code>,
73 <code class="constant">GL_SRGB_ALPHA</code>, or
74 <code class="constant">GL_SRGB8_ALPHA8</code>.
75 </p></dd><dt><span class="term"><em class="parameter"><code>width</code></em></span></dt><dd><p>
76 Specifies the width of the texture image including the border if any. If the GL version does not support non-power-of-two sizes, this value must be
77 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
78
79 <mml:mrow>
80 <mml:msup><mml:mn>2</mml:mn>
81 <mml:mi mathvariant="italic">n</mml:mi>
82 </mml:msup>
83 <mml:mo>+</mml:mo>
84 <mml:mrow>
85 <mml:mn>2</mml:mn>
86 <mml:mo></mml:mo>
87 <mml:mfenced open="(" close=")">
88 <mml:mi mathvariant="italic">border</mml:mi>
89 </mml:mfenced>
90 </mml:mrow>
91 </mml:mrow>
92 </mml:math>
93 for some integer
94 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mml:mi mathvariant="italic">n</mml:mi></mml:math>.
95 All
96 implementations support 3D texture images that are at least 16 texels
97 wide.
98 </p></dd><dt><span class="term"><em class="parameter"><code>height</code></em></span></dt><dd><p>
99 Specifies the height of the texture image including the border if any. If the GL version does not support non-power-of-two sizes, this value must be
100 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
101
102 <mml:mrow>
103 <mml:msup><mml:mn>2</mml:mn>
104 <mml:mi mathvariant="italic">m</mml:mi>
105 </mml:msup>
106 <mml:mo>+</mml:mo>
107 <mml:mrow>
108 <mml:mn>2</mml:mn>
109 <mml:mo></mml:mo>
110 <mml:mfenced open="(" close=")">
111 <mml:mi mathvariant="italic">border</mml:mi>
112 </mml:mfenced>
113 </mml:mrow>
114 </mml:mrow>
115 </mml:math>
116 for some integer
117 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mml:mi mathvariant="italic">m</mml:mi></mml:math>.
118 All
119 implementations support 3D texture images that are at least 16 texels
120 high.
121 </p></dd><dt><span class="term"><em class="parameter"><code>depth</code></em></span></dt><dd><p>
122 Specifies the depth of the texture image including the border if any. If the GL version does not support non-power-of-two sizes, this value must be
123 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
124
125 <mml:mrow>
126 <mml:msup><mml:mn>2</mml:mn>
127 <mml:mi mathvariant="italic">k</mml:mi>
128 </mml:msup>
129 <mml:mo>+</mml:mo>
130 <mml:mrow>
131 <mml:mn>2</mml:mn>
132 <mml:mo></mml:mo>
133 <mml:mfenced open="(" close=")">
134 <mml:mi mathvariant="italic">border</mml:mi>
135 </mml:mfenced>
136 </mml:mrow>
137 </mml:mrow>
138 </mml:math>
139 for some integer
140 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll"><mml:mi mathvariant="italic">k</mml:mi></mml:math>.
141 All
142 implementations support 3D texture images that are at least 16 texels
143 deep.
144 </p></dd><dt><span class="term"><em class="parameter"><code>border</code></em></span></dt><dd><p>
145 Specifies the width of the border.
146 Must be either 0 or 1.
147 </p></dd><dt><span class="term"><em class="parameter"><code>format</code></em></span></dt><dd><p>
148 Specifies the format of the pixel data.
149 The following symbolic values are accepted:
150 <code class="constant">GL_COLOR_INDEX</code>,
151 <code class="constant">GL_RED</code>,
152 <code class="constant">GL_GREEN</code>,
153 <code class="constant">GL_BLUE</code>,
154 <code class="constant">GL_ALPHA</code>,
155 <code class="constant">GL_RGB</code>,
156 <code class="constant">GL_BGR</code>,
157 <code class="constant">GL_RGBA</code>,
158 <code class="constant">GL_BGRA</code>,
159 <code class="constant">GL_LUMINANCE</code>, and
160 <code class="constant">GL_LUMINANCE_ALPHA</code>.
161 </p></dd><dt><span class="term"><em class="parameter"><code>type</code></em></span></dt><dd><p>
162 Specifies the data type of the pixel data.
163 The following symbolic values are accepted:
164 <code class="constant">GL_UNSIGNED_BYTE</code>,
165 <code class="constant">GL_BYTE</code>,
166 <code class="constant">GL_BITMAP</code>,
167 <code class="constant">GL_UNSIGNED_SHORT</code>,
168 <code class="constant">GL_SHORT</code>,
169 <code class="constant">GL_UNSIGNED_INT</code>,
170 <code class="constant">GL_INT</code>,
171 <code class="constant">GL_FLOAT</code>,
172 <code class="constant">GL_UNSIGNED_BYTE_3_3_2</code>,
173 <code class="constant">GL_UNSIGNED_BYTE_2_3_3_REV</code>,
174 <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>,
175 <code class="constant">GL_UNSIGNED_SHORT_5_6_5_REV</code>,
176 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>,
177 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4_REV</code>,
178 <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
179 <code class="constant">GL_UNSIGNED_SHORT_1_5_5_5_REV</code>,
180 <code class="constant">GL_UNSIGNED_INT_8_8_8_8</code>,
181 <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code>,
182 <code class="constant">GL_UNSIGNED_INT_10_10_10_2</code>, and
183 <code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code>.
184 </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
185 Specifies a pointer to the image data in memory.
186 </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
187 Texturing maps a portion of a specified texture image
188 onto each graphical primitive for which texturing is enabled.
189 To enable and disable three-dimensional texturing, call <a class="citerefentry" href="glEnable.xml"><span class="citerefentry"><span class="refentrytitle">glEnable</span></span></a>
190 and <a class="citerefentry" href="glDisable.xml"><span class="citerefentry"><span class="refentrytitle">glDisable</span></span></a> with argument <code class="constant">GL_TEXTURE_3D</code>.
191 </p><p>
192 To define texture images, call <code class="function">glTexImage3D</code>.
193 The arguments describe the parameters of the texture image,
194 such as height,
195 width, depth,
196 width of the border,
197 level-of-detail number
198 (see <a class="citerefentry" href="glTexParameter.xml"><span class="citerefentry"><span class="refentrytitle">glTexParameter</span></span></a>),
199 and number of color components provided.
200 The last three arguments describe how the image is represented in memory;
201 they are identical to the pixel formats used for <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a>.
202 </p><p>
203 If <em class="parameter"><code>target</code></em> is <code class="constant">GL_PROXY_TEXTURE_3D</code>, no data is read from <em class="parameter"><code>data</code></em>, but
204 all of the texture image state is recalculated, checked for
205 consistency, and checked
206 against the implementation's capabilities. If the implementation cannot
207 handle a texture of the requested texture size, it sets
208 all of the image state to 0,
209 but does not generate an error (see <a class="citerefentry" href="glGetError.xml"><span class="citerefentry"><span class="refentrytitle">glGetError</span></span></a>). To query for an
210 entire mipmap array, use an image array level greater than or equal to
211 1.
212 </p><p>
213 If <em class="parameter"><code>target</code></em> is <code class="constant">GL_TEXTURE_3D</code>,
214 data is read from <em class="parameter"><code>data</code></em> as a sequence of signed or unsigned bytes,
215 shorts,
216 or longs,
217 or single-precision floating-point values,
218 depending on <em class="parameter"><code>type</code></em>.
219 These values are grouped into sets of one,
220 two,
221 three,
222 or four values,
223 depending on <em class="parameter"><code>format</code></em>,
224 to form elements.
225 If <em class="parameter"><code>type</code></em> is <code class="constant">GL_BITMAP</code>,
226 the data is considered as a string of unsigned bytes (and
227 <em class="parameter"><code>format</code></em> must be <code class="constant">GL_COLOR_INDEX</code>).
228 Each data byte is treated as eight 1-bit elements,
229 with bit ordering determined by <code class="constant">GL_UNPACK_LSB_FIRST</code>
230 (see <a class="citerefentry" href="glPixelStore.xml"><span class="citerefentry"><span class="refentrytitle">glPixelStore</span></span></a>).
231 </p><p>
232 If a non-zero named buffer object is bound to the <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target
233 (see <a class="citerefentry" href="glBindBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glBindBuffer</span></span></a>) while a texture image is
234 specified, <em class="parameter"><code>data</code></em> is treated as a byte offset into the buffer object's data store.
235 </p><p>
236 The first element corresponds to the lower left corner of the texture
237 image.
238 Subsequent elements progress left-to-right through the remaining texels
239 in the lowest row of the texture image, and then in successively higher
240 rows of the texture image.
241 The final element corresponds to the upper right corner of the texture
242 image.
243 </p><p>
244 <em class="parameter"><code>format</code></em> determines the composition of each element in <em class="parameter"><code>data</code></em>.
245 It can assume one of these symbolic values:
246 </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">GL_COLOR_INDEX</code></span></dt><dd><p>
247 Each element is a single value,
248 a color index.
249 The GL converts it to fixed point
250 (with an unspecified number of zero bits to the right of the binary point),
251 shifted left or right depending on the value and sign of <code class="constant">GL_INDEX_SHIFT</code>,
252 and added to <code class="constant">GL_INDEX_OFFSET</code>
253 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
254 The resulting index is converted to a set of color components
255 using the
256 <code class="constant">GL_PIXEL_MAP_I_TO_R</code>,
257 <code class="constant">GL_PIXEL_MAP_I_TO_G</code>,
258 <code class="constant">GL_PIXEL_MAP_I_TO_B</code>, and
259 <code class="constant">GL_PIXEL_MAP_I_TO_A</code> tables,
260 and clamped to the range [0,1].
261 </p></dd><dt><span class="term"><code class="constant">GL_RED</code></span></dt><dd><p>
262 Each element is a single red component.
263 The GL converts it to floating point and assembles it into an RGBA element
264 by attaching 0 for green and blue, and 1 for alpha.
265 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
266 added to the signed bias <code class="constant">GL_c_BIAS</code>,
267 and clamped to the range [0,1]
268 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
269 </p></dd><dt><span class="term"><code class="constant">GL_GREEN</code></span></dt><dd><p>
270 Each element is a single green component.
271 The GL converts it to floating point and assembles it into an RGBA element
272 by attaching 0 for red and blue, and 1 for alpha.
273 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
274 added to the signed bias <code class="constant">GL_c_BIAS</code>,
275 and clamped to the range [0,1]
276 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
277 </p></dd><dt><span class="term"><code class="constant">GL_BLUE</code></span></dt><dd><p>
278 Each element is a single blue component.
279 The GL converts it to floating point and assembles it into an RGBA element
280 by attaching 0 for red and green, and 1 for alpha.
281 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
282 added to the signed bias <code class="constant">GL_c_BIAS</code>,
283 and clamped to the range [0,1]
284 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
285 </p></dd><dt><span class="term"><code class="constant">GL_ALPHA</code></span></dt><dd><p>
286 Each element is a single alpha component.
287 The GL converts it to floating point and assembles it into an RGBA element
288 by attaching 0 for red, green, and blue.
289 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
290 added to the signed bias <code class="constant">GL_c_BIAS</code>,
291 and clamped to the range [0,1]
292 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
293 </p></dd><dt><span class="term"><code class="constant">GL_INTENSITY</code></span></dt><dd><p>
294 Each element is a single intensity value.
295 The GL converts it to floating point,
296 then assembles it into an RGBA element by replicating the intensity value
297 three times for red, green, blue, and alpha.
298 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
299 added to the signed bias <code class="constant">GL_c_BIAS</code>,
300 and clamped to the range [0,1]
301 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
302 </p></dd><dt><span class="term"><code class="constant">GL_RGB</code></span></dt><dd></dd><dt><span class="term"><code class="constant">GL_BGR</code></span></dt><dd><p>
303 Each element is an RGB triple.
304 The GL converts it to floating point and assembles it into an RGBA element
305 by attaching 1 for alpha.
306 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
307 added to the signed bias <code class="constant">GL_c_BIAS</code>,
308 and clamped to the range [0,1]
309 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
310 </p></dd><dt><span class="term"><code class="constant">GL_RGBA</code></span></dt><dd></dd><dt><span class="term"><code class="constant">GL_BGRA</code></span></dt><dd><p>
311 Each element contains all four components.
312 Each component is multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
313 added to the signed bias <code class="constant">GL_c_BIAS</code>,
314 and clamped to the range [0,1]
315 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
316 </p></dd><dt><span class="term"><code class="constant">GL_LUMINANCE</code></span></dt><dd><p>
317 Each element is a single luminance value.
318 The GL converts it to floating point,
319 then assembles it into an RGBA element by replicating the luminance value
320 three times for red, green, and blue and attaching 1 for alpha.
321 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
322 added to the signed bias <code class="constant">GL_c_BIAS</code>,
323 and clamped to the range [0,1]
324 (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
325 </p></dd><dt><span class="term"><code class="constant">GL_LUMINANCE_ALPHA</code></span></dt><dd><p>
326 Each element is a luminance/alpha pair.
327 The GL converts it to floating point,
328 then assembles it into an RGBA element by replicating the luminance value
329 three times for red, green, and blue.
330 Each component is then multiplied by the signed scale factor <code class="constant">GL_c_SCALE</code>,
331 added to the signed bias <code class="constant">GL_c_BIAS</code>,
332 and clamped to the range [0,1] (see <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>).
333 </p></dd></dl></div><p>
334 Refer to the <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a> reference page for a description of
335 the acceptable values for the <em class="parameter"><code>type</code></em> parameter.
336 </p><p>
337 If an application wants to store the texture at a certain
338 resolution or in a certain format, it can request the resolution
339 and format with <em class="parameter"><code>internalFormat</code></em>. The GL will choose an internal
340 representation that closely approximates that requested by <em class="parameter"><code>internalFormat</code></em>, but
341 it may not match exactly.
342 (The representations specified by <code class="constant">GL_LUMINANCE</code>,
343 <code class="constant">GL_LUMINANCE_ALPHA</code>, <code class="constant">GL_RGB</code>,
344 and <code class="constant">GL_RGBA</code> must match exactly. The numeric values 1, 2, 3, and 4
345 may also be used to specify the above representations.)
346 </p><p>
347 If the <em class="parameter"><code>internalFormat</code></em> parameter is one of the generic compressed formats,
348 <code class="constant">GL_COMPRESSED_ALPHA</code>,
349 <code class="constant">GL_COMPRESSED_INTENSITY</code>,
350 <code class="constant">GL_COMPRESSED_LUMINANCE</code>,
351 <code class="constant">GL_COMPRESSED_LUMINANCE_ALPHA</code>,
352 <code class="constant">GL_COMPRESSED_RGB</code>, or
353 <code class="constant">GL_COMPRESSED_RGBA</code>, the GL will replace the internal format with the symbolic constant for a specific internal format and compress the texture before storage. If no corresponding internal format is available, or the GL can not compress that image for any reason, the internal format is instead replaced with a corresponding base internal format.
354 </p><p>
355 If the <em class="parameter"><code>internalFormat</code></em> parameter is
356 <code class="constant">GL_SRGB</code>,
357 <code class="constant">GL_SRGB8</code>,
358 <code class="constant">GL_SRGB_ALPHA</code>,
359 <code class="constant">GL_SRGB8_ALPHA8</code>,
360 <code class="constant">GL_SLUMINANCE</code>,
361 <code class="constant">GL_SLUMINANCE8</code>,
362 <code class="constant">GL_SLUMINANCE_ALPHA</code>, or
363 <code class="constant">GL_SLUMINANCE8_ALPHA8</code>, the texture is treated as if the red, green, blue, or luminance components are encoded in the sRGB color space. Any alpha component is left unchanged. The conversion from the sRGB encoded component
364 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
365 <mml:msub><mml:mi mathvariant="italic">c</mml:mi>
366 <mml:mi mathvariant="italic">s</mml:mi>
367 </mml:msub>
368 </mml:math>
369 to a linear component
370 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
371 <mml:msub><mml:mi mathvariant="italic">c</mml:mi>
372 <mml:mi mathvariant="italic">l</mml:mi>
373 </mml:msub>
374 </mml:math>
375 is:
376 </p><p>
377 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
378 <mml:mrow>
379 <mml:msub>
380 <mml:mi mathvariant="italic">c</mml:mi>
381 <mml:mi mathvariant="italic">l</mml:mi>
382 </mml:msub>
383 <mml:mo>=</mml:mo>
384 <mml:mrow>
385 <mml:mo>{</mml:mo>
386
387 <mml:mtable columnalign="left">
388 <mml:mtr>
389 <mml:mtd columnalign="left">
390 <mml:mfrac>
391 <mml:msub>
392 <mml:mi mathvariant="italic">c</mml:mi>
393 <mml:mi mathvariant="italic">s</mml:mi>
394 </mml:msub>
395 <mml:mn>12.92</mml:mn>
396 </mml:mfrac>
397 </mml:mtd>
398 <mml:mtd columnalign="left">
399 <mml:mrow>
400 <mml:mspace width="1ex"></mml:mspace>
401 <mml:mo>if</mml:mo>
402 <mml:mspace width="1ex"></mml:mspace>
403 </mml:mrow>
404 <mml:msub>
405 <mml:mi mathvariant="italic">c</mml:mi>
406 <mml:mi mathvariant="italic">s</mml:mi>
407 </mml:msub>
408 <mml:mo></mml:mo>
409 <mml:mn>0.04045</mml:mn>
410 </mml:mtd>
411 </mml:mtr>
412 <mml:mtr>
413 <mml:mtd columnalign="left">
414 <mml:msup>
415 <mml:mrow>
416 <mml:mo>(</mml:mo>
417 <mml:mfrac>
418 <mml:mrow>
419 <mml:msub>
420 <mml:mi>c</mml:mi>
421 <mml:mi>s</mml:mi>
422 </mml:msub>
423 <mml:mo>+</mml:mo>
424 <mml:mn>0.055</mml:mn>
425 </mml:mrow>
426 <mml:mn>1.055</mml:mn>
427 </mml:mfrac>
428 <mml:mo>)</mml:mo>
429 </mml:mrow>
430 <mml:mn>2.4</mml:mn>
431 </mml:msup>
432 </mml:mtd>
433 <mml:mtd columnalign="left">
434 <mml:mrow>
435 <mml:mspace width="1ex"></mml:mspace>
436 <mml:mo>if</mml:mo>
437 <mml:mspace width="1ex"></mml:mspace>
438 </mml:mrow>
439 <mml:msub>
440 <mml:mi mathvariant="italic">c</mml:mi>
441 <mml:mi mathvariant="italic">s</mml:mi>
442 </mml:msub>
443 <mml:mo>&gt;</mml:mo>
444 <mml:mn>0.04045</mml:mn>
445 </mml:mtd>
446 </mml:mtr>
447 </mml:mtable>
448 </mml:mrow>
449 </mml:mrow>
450 </mml:math>
451 </p><p>
452 Assume
453 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
454 <mml:msub><mml:mi mathvariant="italic">c</mml:mi>
455 <mml:mi mathvariant="italic">s</mml:mi>
456 </mml:msub>
457 </mml:math>
458 is the sRGB component in the range [0,1].
459 </p><p>
460 Use the <code class="constant">GL_PROXY_TEXTURE_3D</code> target to try out a resolution and
461 format. The implementation will
462 update and recompute its best match for the requested storage resolution
463 and format. To then query this state, call <a class="citerefentry" href="glGetTexLevelParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexLevelParameter</span></span></a>.
464 If the texture cannot be accommodated, texture state is set to 0.
465 </p><p>
466 A one-component texture image uses only the red component of the RGBA
467 color extracted from <em class="parameter"><code>data</code></em>.
468 A two-component image uses the R and A values.
469 A three-component image uses the R, G, and B values.
470 A four-component image uses all of the RGBA components.
471 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
472 Texturing has no effect in color index mode.
473 </p><p>
474 The texture image can be represented by the same data formats
475 as the pixels in a <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a> command,
476 except that <code class="constant">GL_STENCIL_INDEX</code> and <code class="constant">GL_DEPTH_COMPONENT</code>
477 cannot be used.
478 <a class="citerefentry" href="glPixelStore.xml"><span class="citerefentry"><span class="refentrytitle">glPixelStore</span></span></a> and <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a> modes affect texture images
479 in exactly the way they affect <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a>.
480 </p><p>
481 <code class="function">glTexImage3D</code> is available only if the GL version is 1.2 or greater.
482 </p><p>
483 Internal formats other than 1, 2, 3, or 4 may be used only if the GL
484 version is 1.1 or greater.
485 </p><p>
486 <em class="parameter"><code>data</code></em> may be a null pointer.
487 In this case texture memory is
488 allocated to accommodate a texture of width <em class="parameter"><code>width</code></em>, height <em class="parameter"><code>height</code></em>,
489 and depth <em class="parameter"><code>depth</code></em>.
490 You can then download subtextures to initialize this
491 texture memory.
492 The image is undefined if the user tries to apply
493 an uninitialized portion of the texture image to a primitive.
494 </p><p>
495 Formats <code class="constant">GL_BGR</code>, and <code class="constant">GL_BGRA</code> and types
496 <code class="constant">GL_UNSIGNED_BYTE_3_3_2</code>,
497 <code class="constant">GL_UNSIGNED_BYTE_2_3_3_REV</code>,
498 <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>,
499 <code class="constant">GL_UNSIGNED_SHORT_5_6_5_REV</code>,
500 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>,
501 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4_REV</code>,
502 <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
503 <code class="constant">GL_UNSIGNED_SHORT_1_5_5_5_REV</code>,
504 <code class="constant">GL_UNSIGNED_INT_8_8_8_8</code>,
505 <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code>,
506 <code class="constant">GL_UNSIGNED_INT_10_10_10_2</code>, and
507 <code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code> are available only if the GL version
508 is 1.2 or greater.
509 </p><p>
510 For OpenGL versions 1.3 and greater, or when the <code class="code">ARB_multitexture</code> extension is supported, <code class="function">glTexImage3D</code>
511 specifies the three-dimensional texture for the current texture unit,
512 specified with <a class="citerefentry" href="glActiveTexture.xml"><span class="citerefentry"><span class="refentrytitle">glActiveTexture</span></span></a>.
513 </p><p>
514 If the <code class="code">ARB_imaging</code> extension is supported, RGBA elements may
515 also be processed by the imaging pipeline. The following stages may be
516 applied to an RGBA color before color component clamping to the range
517 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
518
519 <mml:mfenced open="[" close="]">
520 <mml:mn>0</mml:mn>
521 <mml:mn>1</mml:mn>
522 </mml:mfenced>
523 </mml:math>:
524 </p><div class="variablelist"><dl><dt><span class="term">1. Color component replacement by the color table specified for</span></dt><dd><p>
525 <code class="constant">GL_COLOR_TABLE</code>, if enabled. See <a class="citerefentry" href="glColorTable.xml"><span class="citerefentry"><span class="refentrytitle">glColorTable</span></span></a>.
526 </p></dd><dt><span class="term">2. Color component replacement by the color table specified for</span></dt><dd><p>
527 <code class="constant">GL_POST_CONVOLUTION_COLOR_TABLE</code>, if enabled. See <a class="citerefentry" href="glColorTable.xml"><span class="citerefentry"><span class="refentrytitle">glColorTable</span></span></a>.
528 </p></dd><dt><span class="term">3. Transformation by the color matrix. See <a class="citerefentry" href="glMatrixMode.xml"><span class="citerefentry"><span class="refentrytitle">glMatrixMode</span></span></a>.</span></dt><dd></dd><dt><span class="term">4. RGBA components may be multiplied by <code class="constant">GL_POST_COLOR_MATRIX_c_SCALE</code>,</span></dt><dd><p>
529 and added to <code class="constant">GL_POST_COLOR_MATRIX_c_BIAS</code>, if enabled. See
530 <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>.
531 </p></dd><dt><span class="term">5. Color component replacement by the color table specified for</span></dt><dd><p>
532 <code class="constant">GL_POST_COLOR_MATRIX_COLOR_TABLE</code>, if enabled. See
533 <a class="citerefentry" href="glColorTable.xml"><span class="citerefentry"><span class="refentrytitle">glColorTable</span></span></a>.
534 </p></dd></dl></div><p>
535 Non-power-of-two textures are supported if the GL version is 2.0 or greater, or if the implementation exports the <code class="constant">GL_ARB_texture_non_power_of_two</code> extension.
536 </p><p>
537 The
538 <code class="constant">GL_SRGB</code>,
539 <code class="constant">GL_SRGB8</code>,
540 <code class="constant">GL_SRGB_ALPHA</code>,
541 <code class="constant">GL_SRGB8_ALPHA8</code>,
542 <code class="constant">GL_SLUMINANCE</code>,
543 <code class="constant">GL_SLUMINANCE8</code>,
544 <code class="constant">GL_SLUMINANCE_ALPHA</code>, and
545 <code class="constant">GL_SLUMINANCE8_ALPHA8</code>
546 internal formats are only available if the GL version is 2.1 or greater.
547 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
548 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>target</code></em> is not <code class="constant">GL_TEXTURE_3D</code>
549 or <code class="constant">GL_PROXY_TEXTURE_3D</code>.
550 </p><p>
551 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>format</code></em> is not an accepted
552 format constant. Format constants other than <code class="constant">GL_STENCIL_INDEX</code> and <code class="constant">GL_DEPTH_COMPONENT</code>
553 are accepted.
554 </p><p>
555 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>type</code></em> is not a type constant.
556 </p><p>
557 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>type</code></em> is <code class="constant">GL_BITMAP</code> and
558 <em class="parameter"><code>format</code></em> is not <code class="constant">GL_COLOR_INDEX</code>.
559 </p><p>
560 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>level</code></em> is less than 0.
561 </p><p>
562 <code class="constant">GL_INVALID_VALUE</code> may be generated if <em class="parameter"><code>level</code></em> is greater than
563 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
564
565 <mml:mrow>
566 <mml:msub><mml:mi mathvariant="italic">log</mml:mi>
567 <mml:mn>2</mml:mn>
568 </mml:msub>
569 <mml:mo></mml:mo>
570 <mml:mfenced open="(" close=")">
571 <mml:mi mathvariant="italic">max</mml:mi>
572 </mml:mfenced>
573 </mml:mrow>
574 </mml:math>,
575 where <span class="emphasis"><em>max</em></span> is the returned value of <code class="constant">GL_MAX_TEXTURE_SIZE</code>.
576 </p><p>
577 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>internalFormat</code></em> is not 1, 2, 3, 4, or one of the
578 accepted resolution and format symbolic constants.
579 </p><p>
580 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em>, or <em class="parameter"><code>depth</code></em> is less than 0 or greater than 2 + <code class="constant">GL_MAX_TEXTURE_SIZE</code>.
581 </p><p>
582 <code class="constant">GL_INVALID_VALUE</code> is generated if non-power-of-two textures are not supported and the <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em>, or <em class="parameter"><code>depth</code></em> cannot be represented as
583 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
584
585 <mml:mrow>
586 <mml:msup><mml:mn>2</mml:mn>
587 <mml:mi mathvariant="italic">k</mml:mi>
588 </mml:msup>
589 <mml:mo>+</mml:mo>
590 <mml:mrow>
591 <mml:mn>2</mml:mn>
592 <mml:mo></mml:mo>
593 <mml:mfenced open="(" close=")">
594 <mml:mi mathvariant="italic">border</mml:mi>
595 </mml:mfenced>
596 </mml:mrow>
597 </mml:mrow>
598 </mml:math>
599 for some
600 integer value of <span class="emphasis"><em>k</em></span>.
601 </p><p>
602 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>border</code></em> is not 0 or 1.
603 </p><p>
604 <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>type</code></em> is one of
605 <code class="constant">GL_UNSIGNED_BYTE_3_3_2</code>,
606 <code class="constant">GL_UNSIGNED_BYTE_2_3_3_REV</code>,
607 <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>, or
608 <code class="constant">GL_UNSIGNED_SHORT_5_6_5_REV</code>
609 and <em class="parameter"><code>format</code></em> is not <code class="constant">GL_RGB</code>.
610 </p><p>
611 <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>type</code></em> is one of
612 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>,
613 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4_REV</code>,
614 <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
615 <code class="constant">GL_UNSIGNED_SHORT_1_5_5_5_REV</code>,
616 <code class="constant">GL_UNSIGNED_INT_8_8_8_8</code>,
617 <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code>,
618 <code class="constant">GL_UNSIGNED_INT_10_10_10_2</code>, or
619 <code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code>
620 and <em class="parameter"><code>format</code></em> is neither <code class="constant">GL_RGBA</code> nor <code class="constant">GL_BGRA</code>.
621 </p><p>
622 <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>format</code></em> or <em class="parameter"><code>internalFormat</code></em> is
623 <code class="constant">GL_DEPTH_COMPONENT</code>, <code class="constant">GL_DEPTH_COMPONENT16</code>,
624 <code class="constant">GL_DEPTH_COMPONENT24</code>, or <code class="constant">GL_DEPTH_COMPONENT32</code>.
625 </p><p>
626 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
627 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and the buffer object's data store is currently mapped.
628 </p><p>
629 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
630 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and the data would be unpacked from the buffer
631 object such that the memory reads required would exceed the data store size.
632 </p><p>
633 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
634 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and <em class="parameter"><code>data</code></em> is not evenly divisible
635 into the number of bytes needed to store in memory a datum indicated by <em class="parameter"><code>type</code></em>.
636 </p><p>
637 <code class="constant">GL_INVALID_OPERATION</code> is generated if <code class="function">glTexImage3D</code>
638 is executed between the execution of <a class="citerefentry" href="glBegin.xml"><span class="citerefentry"><span class="refentrytitle">glBegin</span></span></a>
639 and the corresponding execution of <a class="citerefentry" href="glEnd.xml"><span class="citerefentry"><span class="refentrytitle">glEnd</span></span></a>.
640 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="associatedgets"></a><h2>Associated Gets</h2><p>
641 <a class="citerefentry" href="glGetTexImage.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexImage</span></span></a>
642 </p><p>
643 <a class="citerefentry" href="glIsEnabled.xml"><span class="citerefentry"><span class="refentrytitle">glIsEnabled</span></span></a> with argument <code class="constant">GL_TEXTURE_3D</code>
644 </p><p>
645 <a class="citerefentry" href="glGet.xml"><span class="citerefentry"><span class="refentrytitle">glGet</span></span></a> with argument <code class="constant">GL_PIXEL_UNPACK_BUFFER_BINDING</code>
646 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
647 <a class="citerefentry" href="glActiveTexture.xml"><span class="citerefentry"><span class="refentrytitle">glActiveTexture</span></span></a>,
648 <a class="citerefentry" href="glColorTable.xml"><span class="citerefentry"><span class="refentrytitle">glColorTable</span></span></a>,
649 <a class="citerefentry" href="glCompressedTexImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexImage1D</span></span></a>,
650 <a class="citerefentry" href="glCompressedTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexImage2D</span></span></a>,
651 <a class="citerefentry" href="glCompressedTexImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexImage3D</span></span></a>,
652 <a class="citerefentry" href="glCompressedTexSubImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexSubImage1D</span></span></a>,
653 <a class="citerefentry" href="glCompressedTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexSubImage2D</span></span></a>,
654 <a class="citerefentry" href="glCompressedTexSubImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glCompressedTexSubImage3D</span></span></a>,
655 <a class="citerefentry" href="glCopyPixels.xml"><span class="citerefentry"><span class="refentrytitle">glCopyPixels</span></span></a>,
656 <a class="citerefentry" href="glCopyTexImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage1D</span></span></a>,
657 <a class="citerefentry" href="glCopyTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
658 <a class="citerefentry" href="glCopyTexSubImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage1D</span></span></a>,
659 <a class="citerefentry" href="glCopyTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
660 <a class="citerefentry" href="glCopyTexSubImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage3D</span></span></a>,
661 <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a>,
662 <a class="citerefentry" href="glGetCompressedTexImage.xml"><span class="citerefentry"><span class="refentrytitle">glGetCompressedTexImage</span></span></a>,
663 <a class="citerefentry" href="glMatrixMode.xml"><span class="citerefentry"><span class="refentrytitle">glMatrixMode</span></span></a>,
664 <a class="citerefentry" href="glPixelStore.xml"><span class="citerefentry"><span class="refentrytitle">glPixelStore</span></span></a>,
665 <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>,
666 <a class="citerefentry" href="glTexEnv.xml"><span class="citerefentry"><span class="refentrytitle">glTexEnv</span></span></a>,
667 <a class="citerefentry" href="glTexGen.xml"><span class="citerefentry"><span class="refentrytitle">glTexGen</span></span></a>,
668 <a class="citerefentry" href="glTexImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage1D</span></span></a>,
669 <a class="citerefentry" href="glTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>,
670 <a class="citerefentry" href="glTexSubImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glTexSubImage1D</span></span></a>,
671 <a class="citerefentry" href="glTexSubImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexSubImage2D</span></span></a>,
672 <a class="citerefentry" href="glTexSubImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glTexSubImage3D</span></span></a>,
673 <a class="citerefentry" href="glTexParameter.xml"><span class="citerefentry"><span class="refentrytitle">glTexParameter</span></span></a>
674 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
675 Copyright <span class="trademark"></span>© 1991-2006
676 Silicon Graphics, Inc. This document is licensed under the SGI
677 Free Software B License. For details, see
678 <a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
679 </p></div></div></body></html>