rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man2 / xhtml / gluBuild3DMipmaps.xml
CommitLineData
7faf1d71
AW
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>gluBuild3DMipmaps</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="gluBuild3DMipmaps"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>gluBuild3DMipmaps — builds a three-dimensional mipmap</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">GLint <b class="fsfunc">gluBuild3DMipmaps</b>(</code></td><td>GLenum  </td><td><var class="pdparam">target</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>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 void *  </td><td><var class="pdparam">data</var><code>)</code>;</td></tr></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>target</code></em></span></dt><dd><p>
4 Specifies the target texture. Must be <code class="constant">GLU_TEXTURE_3D</code>.
5 </p></dd><dt><span class="term"><em class="parameter"><code>internalFormat</code></em></span></dt><dd><p>
6 Requests the internal storage format of the texture image. The most
7 current version of the SGI implementation of GLU does not check this
8 value for validity before passing it on to the underlying OpenGL
9 implementation. A value that is not accepted by the OpenGL
10 implementation will lead to an OpenGL error. The benefit of not
11 checking this value at the GLU level is that OpenGL extensions can add
12 new internal texture formats without requiring a revision of the GLU
13 implementation. Older implementations of GLU check this value and
14 raise a GLU error if it is not 1, 2, 3, or 4 or one of the following
15 symbolic constants:
16 <code class="constant">GLU_ALPHA</code>,
17 <code class="constant">GLU_ALPHA4</code>,
18 <code class="constant">GLU_ALPHA8</code>,
19 <code class="constant">GLU_ALPHA12</code>,
20 <code class="constant">GLU_ALPHA16</code>,
21 <code class="constant">GLU_LUMINANCE</code>,
22 <code class="constant">GLU_LUMINANCE4</code>,
23 <code class="constant">GLU_LUMINANCE8</code>,
24 <code class="constant">GLU_LUMINANCE12</code>,
25 <code class="constant">GLU_LUMINANCE16</code>,
26 <code class="constant">GLU_LUMINANCE_ALPHA</code>,
27 <code class="constant">GLU_LUMINANCE4_ALPHA4</code>,
28 <code class="constant">GLU_LUMINANCE6_ALPHA2</code>,
29 <code class="constant">GLU_LUMINANCE8_ALPHA8</code>,
30 <code class="constant">GLU_LUMINANCE12_ALPHA4</code>,
31 <code class="constant">GLU_LUMINANCE12_ALPHA12</code>,
32 <code class="constant">GLU_LUMINANCE16_ALPHA16</code>,
33 <code class="constant">GLU_INTENSITY</code>,
34 <code class="constant">GLU_INTENSITY4</code>,
35 <code class="constant">GLU_INTENSITY8</code>,
36 <code class="constant">GLU_INTENSITY12</code>,
37 <code class="constant">GLU_INTENSITY16</code>,
38 <code class="constant">GLU_RGB</code>,
39 <code class="constant">GLU_R3_G3_B2</code>,
40 <code class="constant">GLU_RGB4</code>,
41 <code class="constant">GLU_RGB5</code>,
42 <code class="constant">GLU_RGB8</code>,
43 <code class="constant">GLU_RGB10</code>,
44 <code class="constant">GLU_RGB12</code>,
45 <code class="constant">GLU_RGB16</code>,
46 <code class="constant">GLU_RGBA</code>,
47 <code class="constant">GLU_RGBA2</code>,
48 <code class="constant">GLU_RGBA4</code>,
49 <code class="constant">GLU_RGB5_A1</code>,
50 <code class="constant">GLU_RGBA8</code>,
51 <code class="constant">GLU_RGB10_A2</code>,
52 <code class="constant">GLU_RGBA12</code>, or
53 <code class="constant">GLU_RGBA16</code>.
54 </p></dd><dt><span class="term"><em class="parameter"><code>width</code></em>, </span><span class="term"><em class="parameter"><code>height</code></em>, </span><span class="term"><em class="parameter"><code>depth</code></em></span></dt><dd><p>
55 Specifies in pixels the width, height and depth respectively, in pixels
56 of the texture image.
57 </p></dd><dt><span class="term"><em class="parameter"><code>format</code></em></span></dt><dd><p>
58 Specifies the format of the pixel data.
59 Must be one of
60 <code class="constant">GLU_COLOR_INDEX</code>,
61 <code class="constant">GLU_DEPTH_COMPONENT</code>,
62 <code class="constant">GLU_RED</code>,
63 <code class="constant">GLU_GREEN</code>,
64 <code class="constant">GLU_BLUE</code>,
65 <code class="constant">GLU_ALPHA</code>,
66 <code class="constant">GLU_RGB</code>,
67 <code class="constant">GLU_RGBA</code>,
68 <code class="constant">GLU_BGR</code>,
69 <code class="constant">GLU_BGRA</code>,
70 <code class="constant">GLU_LUMINANCE</code>, or
71 <code class="constant">GLU_LUMINANCE_ALPHA</code>.
72 </p></dd><dt><span class="term"><em class="parameter"><code>type</code></em></span></dt><dd><p>
73 Specifies the data type for <em class="parameter"><code>data</code></em>.
74 Must be one of:
75 <code class="constant">GLU_UNSIGNED_BYTE</code>,
76 <code class="constant">GLU_BYTE</code>,
77 <code class="constant">GLU_BITMAP</code>,
78 <code class="constant">GLU_UNSIGNED_SHORT</code>,
79 <code class="constant">GLU_SHORT</code>,
80 <code class="constant">GLU_UNSIGNED_INT</code>,
81 <code class="constant">GLU_INT</code>,
82 <code class="constant">GLU_FLOAT</code>,
83 <code class="constant">GLU_UNSIGNED_BYTE_3_3_2</code>,
84 <code class="constant">GLU_UNSIGNED_BYTE_2_3_3_REV</code>,
85 <code class="constant">GLU_UNSIGNED_SHORT_5_6_5</code>,
86 <code class="constant">GLU_UNSIGNED_SHORT_5_6_5_REV</code>,
87 <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4</code>,
88 <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4_REV</code>,
89 <code class="constant">GLU_UNSIGNED_SHORT_5_5_5_1</code>,
90 <code class="constant">GLU_UNSIGNED_SHORT_1_5_5_5_REV</code>,
91 <code class="constant">GLU_UNSIGNED_INT_8_8_8_8</code>,
92 <code class="constant">GLU_UNSIGNED_INT_8_8_8_8_REV</code>,
93 <code class="constant">GLU_UNSIGNED_INT_10_10_10_2</code>, or
94 <code class="constant">GLU_UNSIGNED_INT_2_10_10_10_REV</code>.
95 </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
96 Specifies a pointer to the image data in memory.
97 </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
98 <code class="function">gluBuild3DMipmaps</code> builds a series of prefiltered three-dimensional texture maps of
99 decreasing resolutions called a mipmap. This is used for the antialiasing of
100 texture-mapped primitives.
101 </p><p>
102 A return value of zero indicates success, otherwise a GLU error code is
103 returned (see <a class="citerefentry" href="gluErrorString.xml"><span class="citerefentry"><span class="refentrytitle">gluErrorString</span></span></a>).
104 </p><p>
105 Initially, the <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em> and <em class="parameter"><code>depth</code></em> of <em class="parameter"><code>data</code></em> are checked to
106 see if they are a power of 2. If not, a copy of <em class="parameter"><code>data</code></em> is made and
107 scaled up or down to the nearest power of 2. (If <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em>, or
108 <em class="parameter"><code>depth</code></em> is exactly between powers of 2, then the copy of <em class="parameter"><code>data</code></em> will
109 scale upwards.) This copy will be used for subsequent mipmapping
110 operations described below. For example, if <em class="parameter"><code>width</code></em> is 57, <em class="parameter"><code>height</code></em> is
111 23, and <em class="parameter"><code>depth</code></em> is 24, then a copy of <em class="parameter"><code>data</code></em> will scale up to 64 in
112 width, down to 16 in height, and up to 32 in depth before mipmapping
113 takes place.
114 </p><p>
115 Then, proxy textures (see <a class="citerefentry" href="glTexImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage3D</span></span></a>) are used to determine if
116 the implementation can fit the requested texture. If not, all three dimensions
117 are continually halved until it fits.
118 </p><p>
119 Next, a series of mipmap levels is built by decimating a copy of <em class="parameter"><code>data</code></em>
120 in half along all three dimensions until size
121 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
122
123 <mml:mrow>
124 <mml:mn>1</mml:mn>
125 <mml:mo>×</mml:mo>
126 <mml:mn>1</mml:mn>
127 <mml:mo>×</mml:mo>
128 <mml:mn>1</mml:mn>
129 </mml:mrow>
130 </mml:math>
131 is
132 reached. At each level, each texel in the halved mipmap level is an
133 average of the corresponding eight texels in the larger mipmap
134 level. (If exactly one of the dimensions is 1, four texels are averaged.
135 If exactly two of the dimensions are 1, two texels are averaged.)
136 </p><p>
137 <a class="citerefentry" href="glTexImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage3D</span></span></a> is called to load each of these mipmap levels.
138 Level 0 is a copy of <em class="parameter"><code>data</code></em>. The highest level is
139 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
140
141 <mml:mrow>
142 <mml:mfenced open="" close="">
143 <mml:msub><mml:mi mathvariant="italic">log</mml:mi>
144 <mml:mn>2</mml:mn>
145 </mml:msub>
146 </mml:mfenced>
147 <mml:mo>⁡</mml:mo>
148 <mml:mfenced open="(" close=")">
149 <mml:mrow>
150 <mml:mi mathvariant="italic">max</mml:mi>
151 <mml:mo>⁡</mml:mo>
152 <mml:mfenced open="(" close=")">
153 <mml:mi mathvariant="italic">width</mml:mi>
154 <mml:mi mathvariant="italic">height</mml:mi>
155 <mml:mi mathvariant="italic">depth</mml:mi>
156 </mml:mfenced>
157 </mml:mrow>
158 </mml:mfenced>
159 </mml:mrow>
160 </mml:math>.
161 For example, if <em class="parameter"><code>width</code></em> is 64, <em class="parameter"><code>height</code></em> is
162 16, and <em class="parameter"><code>depth</code></em> is 32, and the implementation can store a texture of this
163 size, the following mipmap levels are built:
164 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
165
166 <mml:mrow>
167 <mml:mn>64</mml:mn>
168 <mml:mo>×</mml:mo>
169 <mml:mn>16</mml:mn>
170 <mml:mo>×</mml:mo>
171 <mml:mn>32</mml:mn>
172 </mml:mrow>
173 </mml:math>,
174 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
175
176 <mml:mrow>
177 <mml:mn>32</mml:mn>
178 <mml:mo>×</mml:mo>
179 <mml:mn>8</mml:mn>
180 <mml:mo>×</mml:mo>
181 <mml:mn>16</mml:mn>
182 </mml:mrow>
183 </mml:math>,
184 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
185
186 <mml:mrow>
187 <mml:mn>16</mml:mn>
188 <mml:mo>×</mml:mo>
189 <mml:mn>4</mml:mn>
190 <mml:mo>×</mml:mo>
191 <mml:mn>8</mml:mn>
192 </mml:mrow>
193 </mml:math>,
194 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
195
196 <mml:mrow>
197 <mml:mn>8</mml:mn>
198 <mml:mo>×</mml:mo>
199 <mml:mn>2</mml:mn>
200 <mml:mo>×</mml:mo>
201 <mml:mn>4</mml:mn>
202 </mml:mrow>
203 </mml:math>,
204 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
205
206 <mml:mrow>
207 <mml:mn>4</mml:mn>
208 <mml:mo>×</mml:mo>
209 <mml:mn>1</mml:mn>
210 <mml:mo>×</mml:mo>
211 <mml:mn>2</mml:mn>
212 </mml:mrow>
213 </mml:math>,
214 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
215
216 <mml:mrow>
217 <mml:mn>2</mml:mn>
218 <mml:mo>×</mml:mo>
219 <mml:mn>1</mml:mn>
220 <mml:mo>×</mml:mo>
221 <mml:mn>1</mml:mn>
222 </mml:mrow>
223 </mml:math>,
224 and
225 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
226
227 <mml:mrow>
228 <mml:mn>1</mml:mn>
229 <mml:mo>×</mml:mo>
230 <mml:mn>1</mml:mn>
231 <mml:mo>×</mml:mo>
232 <mml:mn>1</mml:mn>
233 </mml:mrow>
234 </mml:math>.
235 These correspond
236 to levels 0 through 6, respectively.
237 </p><p>
238 See the <a class="citerefentry" href="glTexImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage1D</span></span></a> reference page for a description of the
239 acceptable values for <em class="parameter"><code>format</code></em> parameter. See the <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a>
240 reference page for a description of the acceptable values
241 for <em class="parameter"><code>type</code></em> parameter.
242 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
243 Note that there is no direct way of querying the maximum level. This can
244 be derived indirectly via <a class="citerefentry" href="glGetTexLevelParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexLevelParameter</span></span></a>. First, query
245 the width, height, and depth actually used at level 0. (The width,
246 height, and depth may not be equal to <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em>, and <em class="parameter"><code>depth</code></em>
247 respectively since proxy textures might have scaled them to fit the
248 implementation.) Then the maximum level can be derived from the formula
249 <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
250
251 <mml:mrow>
252 <mml:mfenced open="" close="">
253 <mml:msub><mml:mi mathvariant="italic">log</mml:mi>
254 <mml:mn>2</mml:mn>
255 </mml:msub>
256 </mml:mfenced>
257 <mml:mo>⁡</mml:mo>
258 <mml:mfenced open="(" close=")">
259 <mml:mrow>
260 <mml:mi mathvariant="italic">max</mml:mi>
261 <mml:mo>⁡</mml:mo>
262 <mml:mfenced open="(" close=")">
263 <mml:mi mathvariant="italic">width</mml:mi>
264 <mml:mi mathvariant="italic">height</mml:mi>
265 <mml:mi mathvariant="italic">depth</mml:mi>
266 </mml:mfenced>
267 </mml:mrow>
268 </mml:mfenced>
269 </mml:mrow>
270 </mml:math>.
271 </p><p>
272 <code class="function">gluBuild3DMipmaps</code> is only available if the GLU version is 1.3 or greater.
273 </p><p>
274 Formats <code class="constant">GLU_BGR</code>, and <code class="constant">GLU_BGRA</code>, and types
275 <code class="constant">GLU_UNSIGNED_BYTE_3_3_2</code>,
276 <code class="constant">GLU_UNSIGNED_BYTE_2_3_3_REV</code>,
277 <code class="constant">GLU_UNSIGNED_SHORT_5_6_5</code>,
278 <code class="constant">GLU_UNSIGNED_SHORT_5_6_5_REV</code>,
279 <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4</code>,
280 <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4_REV</code>,
281 <code class="constant">GLU_UNSIGNED_SHORT_5_5_5_1</code>,
282 <code class="constant">GLU_UNSIGNED_SHORT_1_5_5_5_REV</code>,
283 <code class="constant">GLU_UNSIGNED_INT_8_8_8_8</code>,
284 <code class="constant">GLU_UNSIGNED_INT_8_8_8_8_REV</code>,
285 <code class="constant">GLU_UNSIGNED_INT_10_10_10_2</code>, and
286 <code class="constant">GLU_UNSIGNED_INT_2_10_10_10_REV</code> are only available if the GL version
287 is 1.2 or greater.
288 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
289 <code class="constant">GLU_INVALID_VALUE</code> is returned if <em class="parameter"><code>width</code></em>, <em class="parameter"><code>height</code></em>, or <em class="parameter"><code>depth</code></em> is &lt; 1.
290 </p><p>
291 <code class="constant">GLU_INVALID_ENUM</code> is returned if <em class="parameter"><code>internalFormat</code></em>, <em class="parameter"><code>format</code></em>, or <em class="parameter"><code>type</code></em> is not
292 legal.
293 </p><p>
294 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_BYTE_3_3_2</code> or <code class="constant">GLU_UNSIGNED_BYTE_2_3_3_REV</code>
295 and <em class="parameter"><code>format</code></em> is not <code class="constant">GLU_RGB</code>.
296 </p><p>
297 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_SHORT_5_6_5</code> or <code class="constant">GLU_UNSIGNED_SHORT_5_6_5_REV</code>
298 and <em class="parameter"><code>format</code></em> is not <code class="constant">GLU_RGB</code>.
299 </p><p>
300 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4</code> or <code class="constant">GLU_UNSIGNED_SHORT_4_4_4_4_REV</code>
301 and <em class="parameter"><code>format</code></em> is neither <code class="constant">GLU_RGBA</code> nor <code class="constant">GLU_BGRA</code>.
302 </p><p>
303 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_SHORT_5_5_5_1</code> or <code class="constant">GLU_UNSIGNED_SHORT_1_5_5_5_REV</code>
304 and <em class="parameter"><code>format</code></em> is neither <code class="constant">GLU_RGBA</code> nor <code class="constant">GLU_BGRA</code>.
305 </p><p>
306 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_INT_8_8_8_8</code> or <code class="constant">GLU_UNSIGNED_INT_8_8_8_8_REV</code>
307 and <em class="parameter"><code>format</code></em> is neither <code class="constant">GLU_RGBA</code> nor <code class="constant">GLU_BGRA</code>.
308 </p><p>
309 <code class="constant">GLU_INVALID_OPERATION</code> is returned if <em class="parameter"><code>type</code></em> is <code class="constant">GLU_UNSIGNED_INT_10_10_10_2</code> or <code class="constant">GLU_UNSIGNED_INT_2_10_10_10_REV</code>
310 and <em class="parameter"><code>format</code></em> is neither <code class="constant">GLU_RGBA</code> nor <code class="constant">GLU_BGRA</code>.
311 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
312 <a class="citerefentry" href="gluBuild1DMipmapLevels.xml"><span class="citerefentry"><span class="refentrytitle">gluBuild1DMipmapLevels</span></span></a>,
313 <a class="citerefentry" href="gluBuild1DMipmaps.xml"><span class="citerefentry"><span class="refentrytitle">gluBuild1DMipmaps</span></span></a>,
314 <a class="citerefentry" href="gluBuild2DMipmapLevels.xml"><span class="citerefentry"><span class="refentrytitle">gluBuild2DMipmapLevels</span></span></a>,
315 <a class="citerefentry" href="gluBuild3DMipmapLevels.xml"><span class="citerefentry"><span class="refentrytitle">gluBuild3DMipmapLevels</span></span></a>,
316 <code class="function">gluBuild3DMipmaps</code>,
317 <a class="citerefentry" href="gluErrorString.xml"><span class="citerefentry"><span class="refentrytitle">gluErrorString</span></span></a>,
318 <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a>,
319 <a class="citerefentry" href="glGetTexImage.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexImage</span></span></a>,
320 <a class="citerefentry" href="glGetTexLevelParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexLevelParameter</span></span></a>,
321 <a class="citerefentry" href="glTexImage1D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage1D</span></span></a>,
322 <a class="citerefentry" href="glTexImage2D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>,
323 <a class="citerefentry" href="glTexImage3D.xml"><span class="citerefentry"><span class="refentrytitle">glTexImage3D</span></span></a>
324 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
325 Copyright <span class="trademark"></span>© 1991-2006
326 Silicon Graphics, Inc. This document is licensed under the SGI
327 Free Software B License. For details, see
328 <a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
329 </p></div></div></body></html>