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