include more low-level bindings
[clinton/guile-figl.git] / upstream-man-pages / man2 / xhtml / glConvolutionFilter1D.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>glConvolutionFilter1D</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glConvolutionFilter1D"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glConvolutionFilter1D — define a one-dimensional convolution filter</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">glConvolutionFilter1D</b>(</code></td><td>GLenum  </td><td><var class="pdparam">target</var>, </td></tr><tr><td> </td><td>GLenum  </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>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><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 Must be <code class="constant">GL_CONVOLUTION_1D</code>.
5 </p></dd><dt><span class="term"><em class="parameter"><code>internalformat</code></em></span></dt><dd><p>
6 The internal format of the convolution filter kernel.
7 The allowable values are
8 <code class="constant">GL_ALPHA</code>,
9 <code class="constant">GL_ALPHA4</code>,
10 <code class="constant">GL_ALPHA8</code>,
11 <code class="constant">GL_ALPHA12</code>,
12 <code class="constant">GL_ALPHA16</code>,
13 <code class="constant">GL_LUMINANCE</code>,
14 <code class="constant">GL_LUMINANCE4</code>,
15 <code class="constant">GL_LUMINANCE8</code>,
16 <code class="constant">GL_LUMINANCE12</code>,
17 <code class="constant">GL_LUMINANCE16</code>,
18 <code class="constant">GL_LUMINANCE_ALPHA</code>,
19 <code class="constant">GL_LUMINANCE4_ALPHA4</code>,
20 <code class="constant">GL_LUMINANCE6_ALPHA2</code>,
21 <code class="constant">GL_LUMINANCE8_ALPHA8</code>,
22 <code class="constant">GL_LUMINANCE12_ALPHA4</code>,
23 <code class="constant">GL_LUMINANCE12_ALPHA12</code>,
24 <code class="constant">GL_LUMINANCE16_ALPHA16</code>,
25 <code class="constant">GL_INTENSITY</code>,
26 <code class="constant">GL_INTENSITY4</code>,
27 <code class="constant">GL_INTENSITY8</code>,
28 <code class="constant">GL_INTENSITY12</code>,
29 <code class="constant">GL_INTENSITY16</code>,
30 <code class="constant">GL_R3_G3_B2</code>,
31 <code class="constant">GL_RGB</code>,
32 <code class="constant">GL_RGB4</code>,
33 <code class="constant">GL_RGB5</code>,
34 <code class="constant">GL_RGB8</code>,
35 <code class="constant">GL_RGB10</code>,
36 <code class="constant">GL_RGB12</code>,
37 <code class="constant">GL_RGB16</code>,
38 <code class="constant">GL_RGBA</code>,
39 <code class="constant">GL_RGBA2</code>,
40 <code class="constant">GL_RGBA4</code>,
41 <code class="constant">GL_RGB5_A1</code>,
42 <code class="constant">GL_RGBA8</code>,
43 <code class="constant">GL_RGB10_A2</code>,
44 <code class="constant">GL_RGBA12</code>, or
45 <code class="constant">GL_RGBA16</code>.
46 </p></dd><dt><span class="term"><em class="parameter"><code>width</code></em></span></dt><dd><p>
47 The width of the pixel array referenced by <em class="parameter"><code>data</code></em>.
48 </p></dd><dt><span class="term"><em class="parameter"><code>format</code></em></span></dt><dd><p>
49 The format of the pixel data in <em class="parameter"><code>data</code></em>.
50 The allowable values are
51 <code class="constant">GL_ALPHA</code>,
52 <code class="constant">GL_LUMINANCE</code>,
53 <code class="constant">GL_LUMINANCE_ALPHA</code>,
54 <code class="constant">GL_INTENSITY</code>,
55 <code class="constant">GL_RGB</code>, and
56 <code class="constant">GL_RGBA</code>.
57 </p></dd><dt><span class="term"><em class="parameter"><code>type</code></em></span></dt><dd><p>
58 The type of the pixel data in <em class="parameter"><code>data</code></em>.
59 Symbolic constants
60 <code class="constant">GL_UNSIGNED_BYTE</code>,
61 <code class="constant">GL_BYTE</code>,
62 <code class="constant">GL_BITMAP</code>,
63 <code class="constant">GL_UNSIGNED_SHORT</code>,
64 <code class="constant">GL_SHORT</code>,
65 <code class="constant">GL_UNSIGNED_INT</code>,
66 <code class="constant">GL_INT</code>,
67 <code class="constant">GL_FLOAT</code>,
68 <code class="constant">GL_UNSIGNED_BYTE_3_3_2</code>,
69 <code class="constant">GL_UNSIGNED_BYTE_2_3_3_REV</code>,
70 <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>,
71 <code class="constant">GL_UNSIGNED_SHORT_5_6_5_REV</code>,
72 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>,
73 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4_REV</code>,
74 <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
75 <code class="constant">GL_UNSIGNED_SHORT_1_5_5_5_REV</code>,
76 <code class="constant">GL_UNSIGNED_INT_8_8_8_8</code>,
77 <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code>,
78 <code class="constant">GL_UNSIGNED_INT_10_10_10_2</code>, and
79 <code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code>
80 are accepted.
81 </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
82 Pointer to a one-dimensional array of pixel data that is processed to
83 build the convolution filter kernel.
84 </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
85 <code class="function">glConvolutionFilter1D</code> builds a one-dimensional convolution filter kernel from an array of
86 pixels.
87 </p><p>
88 The pixel array specified by <em class="parameter"><code>width</code></em>, <em class="parameter"><code>format</code></em>, <em class="parameter"><code>type</code></em>, and <em class="parameter"><code>data</code></em>
89 is extracted from memory and
90 processed just as if <a class="citerefentry" href="glDrawPixels.xml"><span class="citerefentry"><span class="refentrytitle">glDrawPixels</span></span></a> were called, but processing
91 stops after the final expansion to RGBA is completed.
92 </p><p>
93 If a non-zero named buffer object is bound to the <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target
94 (see <a class="citerefentry" href="glBindBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glBindBuffer</span></span></a>) while a convolution filter is
95 specified, <em class="parameter"><code>data</code></em> is treated as a byte offset into the buffer object's data store.
96 </p><p>
97 The R, G, B, and A components of each pixel are next scaled by the four
98 1D <code class="constant">GL_CONVOLUTION_FILTER_SCALE</code> parameters and biased by the
99 four 1D <code class="constant">GL_CONVOLUTION_FILTER_BIAS</code> parameters.
100 (The scale and bias parameters are set by <a class="citerefentry" href="glConvolutionParameter.xml"><span class="citerefentry"><span class="refentrytitle">glConvolutionParameter</span></span></a>
101 using the <code class="constant">GL_CONVOLUTION_1D</code> target and the names
102 <code class="constant">GL_CONVOLUTION_FILTER_SCALE</code> and <code class="constant">GL_CONVOLUTION_FILTER_BIAS</code>.
103 The parameters themselves are vectors of four values that are applied to red,
104 green, blue, and alpha, in that order.)
105 The R, G, B, and A values are not clamped to [0,1] at any time during this
106 process.
107 </p><p>
108 Each pixel is then converted to the internal format specified by
109 <em class="parameter"><code>internalformat</code></em>.
110 This conversion simply maps the component values of the pixel (R, G, B,
111 and A) to the values included in the internal format (red, green, blue,
112 alpha, luminance, and intensity). The mapping is as follows:
113 </p><p>
114 </p><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /></colgroup><thead><tr><th align="left"><span class="bold"><strong>
115 Internal Format
116 </strong></span></th><th align="center"><span class="bold"><strong>
117 Red
118 </strong></span></th><th align="center"><span class="bold"><strong>
119 Green
120 </strong></span></th><th align="center"><span class="bold"><strong>
121 Blue
122 </strong></span></th><th align="center"><span class="bold"><strong>
123 Alpha
124 </strong></span></th><th align="center"><span class="bold"><strong>
125 Luminance
126 </strong></span></th><th align="center"><span class="bold"><strong>
127 Intensity
128 </strong></span></th></tr></thead><tbody><tr><td align="left">
129 <code class="constant">GL_ALPHA</code>
130 </td><td align="center">
131 </td><td align="center">
132 </td><td align="center">
133 </td><td align="center">
134 A
135 </td><td align="center">
136 </td><td align="center">
137
138 </td></tr><tr><td align="left">
139 <code class="constant">GL_LUMINANCE</code>
140 </td><td align="center">
141 </td><td align="center">
142 </td><td align="center">
143 </td><td align="center">
144 </td><td align="center">
145 R
146 </td><td align="center">
147
148 </td></tr><tr><td align="left">
149 <code class="constant">GL_LUMINANCE_ALPHA</code>
150 </td><td align="center">
151 </td><td align="center">
152 </td><td align="center">
153 </td><td align="center">
154 A
155 </td><td align="center">
156 R
157 </td><td align="center">
158
159 </td></tr><tr><td align="left">
160 <code class="constant">GL_INTENSITY</code>
161 </td><td align="center">
162 </td><td align="center">
163 </td><td align="center">
164 </td><td align="center">
165 </td><td align="center">
166 </td><td align="center">
167 R
168 </td></tr><tr><td align="left">
169 <code class="constant">GL_RGB</code>
170 </td><td align="center">
171 R
172 </td><td align="center">
173 G
174 </td><td align="center">
175 B
176 </td><td align="center">
177 </td><td align="center">
178 </td><td align="center">
179
180 </td></tr><tr><td align="left">
181 <code class="constant">GL_RGBA</code>
182 </td><td align="center">
183 R
184 </td><td align="center">
185 G
186 </td><td align="center">
187 B
188 </td><td align="center">
189 A
190 </td><td align="center">
191 </td><td align="center">
192
193 </td></tr></tbody></table></div><p>
194 The red, green, blue, alpha, luminance, and/or intensity components of
195 the resulting pixels are stored in floating-point rather than integer
196 format.
197 They form a one-dimensional filter kernel image indexed with coordinate
198 <span class="emphasis"><em>i</em></span> such that <span class="emphasis"><em>i</em></span> starts at 0 and increases from left to right.
199 Kernel location <span class="emphasis"><em>i</em></span> is derived from the <span class="emphasis"><em>i</em></span>th pixel, counting from 0.
200 </p><p>
201 Note that after a convolution is performed, the resulting color
202 components are also scaled by their corresponding
203 <code class="constant">GL_POST_CONVOLUTION_c_SCALE</code> parameters and biased by their
204 corresponding <code class="constant">GL_POST_CONVOLUTION_c_BIAS</code> parameters (where
205 <span class="emphasis"><em>c</em></span> takes on the values <span class="bold"><strong>RED</strong></span>, <span class="bold"><strong>GREEN</strong></span>, <span class="bold"><strong>BLUE</strong></span>, and
206 <span class="bold"><strong>ALPHA</strong></span>).
207 These parameters are set by <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>.
208 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
209 <code class="function">glConvolutionFilter1D</code> is present only if <code class="code">ARB_imaging</code> is returned when <a class="citerefentry" href="glGetString.xml"><span class="citerefentry"><span class="refentrytitle">glGetString</span></span></a>
210 is called with an argument of <code class="constant">GL_EXTENSIONS</code>.
211 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
212 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>target</code></em> is not
213 <code class="constant">GL_CONVOLUTION_1D</code>.
214 </p><p>
215 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>internalformat</code></em> is not one of the
216 allowable values.
217 </p><p>
218 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>format</code></em> is not one of the allowable
219 values.
220 </p><p>
221 <code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>type</code></em> is not one of the allowable
222 values.
223 </p><p>
224 <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>width</code></em> is less than zero or greater
225 than the maximum supported value.
226 This value may be queried with <a class="citerefentry" href="glGetConvolutionParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetConvolutionParameter</span></span></a>
227 using target <code class="constant">GL_CONVOLUTION_1D</code> and name
228 <code class="constant">GL_MAX_CONVOLUTION_WIDTH</code>.
229 </p><p>
230 <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>format</code></em> is one of
231 <code class="constant">GL_UNSIGNED_BYTE_3_3_2</code>,
232 <code class="constant">GL_UNSIGNED_BYTE_2_3_3_REV</code>,
233 <code class="constant">GL_UNSIGNED_SHORT_5_6_5</code>, or
234 <code class="constant">GL_UNSIGNED_SHORT_5_6_5_REV</code>
235 and <em class="parameter"><code>type</code></em> is not <code class="constant">GL_RGB</code>.
236 </p><p>
237 <code class="constant">GL_INVALID_OPERATION</code> is generated if <em class="parameter"><code>format</code></em> is one of
238 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4</code>,
239 <code class="constant">GL_UNSIGNED_SHORT_4_4_4_4_REV</code>,
240 <code class="constant">GL_UNSIGNED_SHORT_5_5_5_1</code>,
241 <code class="constant">GL_UNSIGNED_SHORT_1_5_5_5_REV</code>,
242 <code class="constant">GL_UNSIGNED_INT_8_8_8_8</code>,
243 <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code>,
244 <code class="constant">GL_UNSIGNED_INT_10_10_10_2</code>, or
245 <code class="constant">GL_UNSIGNED_INT_2_10_10_10_REV</code>
246 and <em class="parameter"><code>type</code></em> is neither <code class="constant">GL_RGBA</code> nor <code class="constant">GL_BGRA</code>.
247 </p><p>
248 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
249 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and the buffer object's data store is currently mapped.
250 </p><p>
251 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
252 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and the data would be unpacked from the buffer
253 object such that the memory reads required would exceed the data store size.
254 </p><p>
255 <code class="constant">GL_INVALID_OPERATION</code> is generated if a non-zero buffer object name is bound to the
256 <code class="constant">GL_PIXEL_UNPACK_BUFFER</code> target and <em class="parameter"><code>data</code></em> is not evenly divisible
257 into the number of bytes needed to store in memory a datum indicated by <em class="parameter"><code>type</code></em>.
258 </p><p>
259 <code class="constant">GL_INVALID_OPERATION</code> is generated if <code class="function">glConvolutionFilter1D</code> is executed
260 between the execution of <a class="citerefentry" href="glBegin.xml"><span class="citerefentry"><span class="refentrytitle">glBegin</span></span></a> and the corresponding
261 execution of <a class="citerefentry" href="glEnd.xml"><span class="citerefentry"><span class="refentrytitle">glEnd</span></span></a>.
262 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="associatedgets"></a><h2>Associated Gets</h2><p>
263 <a class="citerefentry" href="glGetConvolutionParameter.xml"><span class="citerefentry"><span class="refentrytitle">glGetConvolutionParameter</span></span></a>, <a class="citerefentry" href="glGetConvolutionFilter.xml"><span class="citerefentry"><span class="refentrytitle">glGetConvolutionFilter</span></span></a>
264 </p><p>
265 <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>
266 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
267 <a class="citerefentry" href="glConvolutionFilter2D.xml"><span class="citerefentry"><span class="refentrytitle">glConvolutionFilter2D</span></span></a>,
268 <a class="citerefentry" href="glSeparableFilter2D.xml"><span class="citerefentry"><span class="refentrytitle">glSeparableFilter2D</span></span></a>,
269 <a class="citerefentry" href="glConvolutionParameter.xml"><span class="citerefentry"><span class="refentrytitle">glConvolutionParameter</span></span></a>,
270 <a class="citerefentry" href="glPixelTransfer.xml"><span class="citerefentry"><span class="refentrytitle">glPixelTransfer</span></span></a>
271 </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
272 Copyright <span class="trademark"></span>© 1991-2006
273 Silicon Graphics, Inc. This document is licensed under the SGI
274 Free Software B License. For details, see
275 <a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
276 </p></div></div></body></html>