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>glBlendFunc
</title><meta name=
"generator" content=
"DocBook XSL Stylesheets V1.73.2" /></head><body><div class=
"refentry" lang=
"en" xml:
lang=
"en"><a id=
"glBlendFunc"></a><div class=
"titlepage"></div><div class=
"refnamediv"><h2>Name
</h2><p>glBlendFunc — specify pixel arithmetic
</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">glBlendFunc
</b>(
</code></td><td>GLenum
</td><td><var class=
"pdparam">sfactor
</var>,
</td></tr><tr><td> </td><td>GLenum
</td><td><var class=
"pdparam">dfactor
</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>sfactor
</code></em></span></dt><dd><p>
4 Specifies how the red, green, blue,
5 and alpha source blending factors are computed.
6 The following symbolic constants are accepted:
7 <code class=
"constant">GL_ZERO
</code>,
8 <code class=
"constant">GL_ONE
</code>,
9 <code class=
"constant">GL_SRC_COLOR
</code>,
10 <code class=
"constant">GL_ONE_MINUS_SRC_COLOR
</code>,
11 <code class=
"constant">GL_DST_COLOR
</code>,
12 <code class=
"constant">GL_ONE_MINUS_DST_COLOR
</code>,
13 <code class=
"constant">GL_SRC_ALPHA
</code>,
14 <code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>,
15 <code class=
"constant">GL_DST_ALPHA
</code>,
16 <code class=
"constant">GL_ONE_MINUS_DST_ALPHA
</code>,
17 <code class=
"constant">GL_CONSTANT_COLOR
</code>,
18 <code class=
"constant">GL_ONE_MINUS_CONSTANT_COLOR
</code>,
19 <code class=
"constant">GL_CONSTANT_ALPHA
</code>,
20 <code class=
"constant">GL_ONE_MINUS_CONSTANT_ALPHA
</code>, and
21 <code class=
"constant">GL_SRC_ALPHA_SATURATE
</code>.
22 The initial value is
<code class=
"constant">GL_ONE
</code>.
23 </p></dd><dt><span class=
"term"><em class=
"parameter"><code>dfactor
</code></em></span></dt><dd><p>
24 Specifies how the red, green, blue,
25 and alpha destination blending factors are computed.
26 The following symbolic constants are accepted:
27 <code class=
"constant">GL_ZERO
</code>,
28 <code class=
"constant">GL_ONE
</code>,
29 <code class=
"constant">GL_SRC_COLOR
</code>,
30 <code class=
"constant">GL_ONE_MINUS_SRC_COLOR
</code>,
31 <code class=
"constant">GL_DST_COLOR
</code>,
32 <code class=
"constant">GL_ONE_MINUS_DST_COLOR
</code>,
33 <code class=
"constant">GL_SRC_ALPHA
</code>,
34 <code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>,
35 <code class=
"constant">GL_DST_ALPHA
</code>,
36 <code class=
"constant">GL_ONE_MINUS_DST_ALPHA
</code>.
37 <code class=
"constant">GL_CONSTANT_COLOR
</code>,
38 <code class=
"constant">GL_ONE_MINUS_CONSTANT_COLOR
</code>,
39 <code class=
"constant">GL_CONSTANT_ALPHA
</code>, and
40 <code class=
"constant">GL_ONE_MINUS_CONSTANT_ALPHA
</code>.
41 The initial value is
<code class=
"constant">GL_ZERO
</code>.
42 </p></dd></dl></div></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"description"></a><h2>Description
</h2><p>
43 In RGBA mode, pixels can be drawn using a function that blends
44 the incoming (source) RGBA values with the RGBA values
45 that are already in the frame buffer (the destination values).
46 Blending is initially disabled.
47 Use
<a class=
"citerefentry" href=
"glEnable.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glEnable
</span></span></a> and
<a class=
"citerefentry" href=
"glDisable.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glDisable
</span></span></a> with argument
<code class=
"constant">GL_BLEND
</code>
48 to enable and disable blending.
50 <code class=
"function">glBlendFunc
</code> defines the operation of blending when it is enabled.
51 <em class=
"parameter"><code>sfactor
</code></em> specifies which method is used to scale the
52 source color components.
53 <em class=
"parameter"><code>dfactor
</code></em> specifies which method is used to scale the
54 destination color components.
55 The possible methods are described in the following table.
56 Each method defines four scale factors,
57 one each for red, green, blue, and alpha.
58 In the table and in subsequent equations, source and destination
59 color components are referred to as
60 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
62 <mml:mfenced open=
"(" close=
")">
63 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
64 <mml:mi mathvariant=
"italic">s
</mml:mi>
66 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
67 <mml:mi mathvariant=
"italic">s
</mml:mi>
69 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
70 <mml:mi mathvariant=
"italic">s
</mml:mi>
72 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
73 <mml:mi mathvariant=
"italic">s
</mml:mi>
78 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
80 <mml:mfenced open=
"(" close=
")">
81 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
82 <mml:mi mathvariant=
"italic">d
</mml:mi>
84 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
85 <mml:mi mathvariant=
"italic">d
</mml:mi>
87 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
88 <mml:mi mathvariant=
"italic">d
</mml:mi>
90 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
91 <mml:mi mathvariant=
"italic">d
</mml:mi>
95 The color specified by
<a class=
"citerefentry" href=
"glBlendColor.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBlendColor
</span></span></a> is referred to as
96 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
98 <mml:mfenced open=
"(" close=
")">
99 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
100 <mml:mi mathvariant=
"italic">c
</mml:mi>
102 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
103 <mml:mi mathvariant=
"italic">c
</mml:mi>
105 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
106 <mml:mi mathvariant=
"italic">c
</mml:mi>
108 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
109 <mml:mi mathvariant=
"italic">c
</mml:mi>
113 They are understood to have integer values between
0 and
114 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
116 <mml:mfenced open=
"(" close=
")">
117 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
118 <mml:mi mathvariant=
"italic">R
</mml:mi>
120 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
121 <mml:mi mathvariant=
"italic">G
</mml:mi>
123 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
124 <mml:mi mathvariant=
"italic">B
</mml:mi>
126 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
127 <mml:mi mathvariant=
"italic">A
</mml:mi>
134 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
137 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
138 <mml:mi mathvariant=
"italic">c
</mml:mi>
142 <mml:msup><mml:mn>2</mml:mn>
143 <mml:mfenced open=
"" close=
"">
144 <mml:msub><mml:mi mathvariant=
"italic">m
</mml:mi>
145 <mml:mi mathvariant=
"italic">c
</mml:mi>
157 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
159 <mml:mfenced open=
"(" close=
")">
160 <mml:msub><mml:mi mathvariant=
"italic">m
</mml:mi>
161 <mml:mi mathvariant=
"italic">R
</mml:mi>
163 <mml:msub><mml:mi mathvariant=
"italic">m
</mml:mi>
164 <mml:mi mathvariant=
"italic">G
</mml:mi>
166 <mml:msub><mml:mi mathvariant=
"italic">m
</mml:mi>
167 <mml:mi mathvariant=
"italic">B
</mml:mi>
169 <mml:msub><mml:mi mathvariant=
"italic">m
</mml:mi>
170 <mml:mi mathvariant=
"italic">A
</mml:mi>
174 is the number of red,
179 Source and destination scale factors are referred to as
180 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
182 <mml:mfenced open=
"(" close=
")">
183 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
184 <mml:mi mathvariant=
"italic">R
</mml:mi>
186 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
187 <mml:mi mathvariant=
"italic">G
</mml:mi>
189 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
190 <mml:mi mathvariant=
"italic">B
</mml:mi>
192 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
193 <mml:mi mathvariant=
"italic">A
</mml:mi>
198 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
200 <mml:mfenced open=
"(" close=
")">
201 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
202 <mml:mi mathvariant=
"italic">R
</mml:mi>
204 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
205 <mml:mi mathvariant=
"italic">G
</mml:mi>
207 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
208 <mml:mi mathvariant=
"italic">B
</mml:mi>
210 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
211 <mml:mi mathvariant=
"italic">A
</mml:mi>
215 The scale factors described in the table,
217 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
219 <mml:mfenced open=
"(" close=
")">
220 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
221 <mml:mi mathvariant=
"italic">R
</mml:mi>
223 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
224 <mml:mi mathvariant=
"italic">G
</mml:mi>
226 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
227 <mml:mi mathvariant=
"italic">B
</mml:mi>
229 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
230 <mml:mi mathvariant=
"italic">A
</mml:mi>
234 represent either source or destination factors.
235 All scale factors have range
236 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
238 <mml:mfenced open=
"[" close=
"]">
244 </p><div class=
"informaltable"><table border=
"1"><colgroup><col align=
"left" /><col align=
"left" /></colgroup><thead><tr><th align=
"left"><span class=
"bold"><strong>
246 </strong></span></th><th align=
"left"><span class=
"bold"><strong>
247 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
249 <mml:mfenced open=
"(" close=
")">
250 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
251 <mml:mi mathvariant=
"italic">R
</mml:mi>
253 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
254 <mml:mi mathvariant=
"italic">G
</mml:mi>
256 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
257 <mml:mi mathvariant=
"italic">B
</mml:mi>
259 <mml:msub><mml:mi mathvariant=
"italic">f
</mml:mi>
260 <mml:mi mathvariant=
"italic">A
</mml:mi>
264 </strong></span></th></tr></thead><tbody><tr><td align=
"left">
265 <code class=
"constant">GL_ZERO
</code>
266 </td><td align=
"left">
267 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
269 <mml:mfenced open=
"(" close=
")">
276 </td></tr><tr><td align=
"left">
277 <code class=
"constant">GL_ONE
</code>
278 </td><td align=
"left">
279 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
281 <mml:mfenced open=
"(" close=
")">
288 </td></tr><tr><td align=
"left">
289 <code class=
"constant">GL_SRC_COLOR
</code>
290 </td><td align=
"left">
291 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
293 <mml:mfenced open=
"(" close=
")">
295 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
296 <mml:mi mathvariant=
"italic">s
</mml:mi>
298 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
299 <mml:mi mathvariant=
"italic">R
</mml:mi>
303 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
304 <mml:mi mathvariant=
"italic">s
</mml:mi>
306 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
307 <mml:mi mathvariant=
"italic">G
</mml:mi>
311 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
312 <mml:mi mathvariant=
"italic">s
</mml:mi>
314 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
315 <mml:mi mathvariant=
"italic">B
</mml:mi>
319 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
320 <mml:mi mathvariant=
"italic">s
</mml:mi>
322 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
323 <mml:mi mathvariant=
"italic">A
</mml:mi>
328 </td></tr><tr><td align=
"left">
329 <code class=
"constant">GL_ONE_MINUS_SRC_COLOR
</code>
330 </td><td align=
"left">
331 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
334 <mml:mfenced open=
"(" close=
")">
341 <mml:mfenced open=
"(" close=
")">
343 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
344 <mml:mi mathvariant=
"italic">s
</mml:mi>
346 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
347 <mml:mi mathvariant=
"italic">R
</mml:mi>
351 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
352 <mml:mi mathvariant=
"italic">s
</mml:mi>
354 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
355 <mml:mi mathvariant=
"italic">G
</mml:mi>
359 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
360 <mml:mi mathvariant=
"italic">s
</mml:mi>
362 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
363 <mml:mi mathvariant=
"italic">B
</mml:mi>
367 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
368 <mml:mi mathvariant=
"italic">s
</mml:mi>
370 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
371 <mml:mi mathvariant=
"italic">A
</mml:mi>
377 </td></tr><tr><td align=
"left">
378 <code class=
"constant">GL_DST_COLOR
</code>
379 </td><td align=
"left">
380 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
382 <mml:mfenced open=
"(" close=
")">
384 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
385 <mml:mi mathvariant=
"italic">d
</mml:mi>
387 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
388 <mml:mi mathvariant=
"italic">R
</mml:mi>
392 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
393 <mml:mi mathvariant=
"italic">d
</mml:mi>
395 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
396 <mml:mi mathvariant=
"italic">G
</mml:mi>
400 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
401 <mml:mi mathvariant=
"italic">d
</mml:mi>
403 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
404 <mml:mi mathvariant=
"italic">B
</mml:mi>
408 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
409 <mml:mi mathvariant=
"italic">d
</mml:mi>
411 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
412 <mml:mi mathvariant=
"italic">A
</mml:mi>
417 </td></tr><tr><td align=
"left">
418 <code class=
"constant">GL_ONE_MINUS_DST_COLOR
</code>
419 </td><td align=
"left">
420 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
423 <mml:mfenced open=
"(" close=
")">
430 <mml:mfenced open=
"(" close=
")">
432 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
433 <mml:mi mathvariant=
"italic">d
</mml:mi>
435 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
436 <mml:mi mathvariant=
"italic">R
</mml:mi>
440 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
441 <mml:mi mathvariant=
"italic">d
</mml:mi>
443 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
444 <mml:mi mathvariant=
"italic">G
</mml:mi>
448 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
449 <mml:mi mathvariant=
"italic">d
</mml:mi>
451 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
452 <mml:mi mathvariant=
"italic">B
</mml:mi>
456 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
457 <mml:mi mathvariant=
"italic">d
</mml:mi>
459 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
460 <mml:mi mathvariant=
"italic">A
</mml:mi>
466 </td></tr><tr><td align=
"left">
467 <code class=
"constant">GL_SRC_ALPHA
</code>
468 </td><td align=
"left">
469 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
471 <mml:mfenced open=
"(" close=
")">
473 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
474 <mml:mi mathvariant=
"italic">s
</mml:mi>
476 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
477 <mml:mi mathvariant=
"italic">A
</mml:mi>
481 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
482 <mml:mi mathvariant=
"italic">s
</mml:mi>
484 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
485 <mml:mi mathvariant=
"italic">A
</mml:mi>
489 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
490 <mml:mi mathvariant=
"italic">s
</mml:mi>
492 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
493 <mml:mi mathvariant=
"italic">A
</mml:mi>
497 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
498 <mml:mi mathvariant=
"italic">s
</mml:mi>
500 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
501 <mml:mi mathvariant=
"italic">A
</mml:mi>
506 </td></tr><tr><td align=
"left">
507 <code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>
508 </td><td align=
"left">
509 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
512 <mml:mfenced open=
"(" close=
")">
519 <mml:mfenced open=
"(" close=
")">
521 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
522 <mml:mi mathvariant=
"italic">s
</mml:mi>
524 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
525 <mml:mi mathvariant=
"italic">A
</mml:mi>
529 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
530 <mml:mi mathvariant=
"italic">s
</mml:mi>
532 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
533 <mml:mi mathvariant=
"italic">A
</mml:mi>
537 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
538 <mml:mi mathvariant=
"italic">s
</mml:mi>
540 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
541 <mml:mi mathvariant=
"italic">A
</mml:mi>
545 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
546 <mml:mi mathvariant=
"italic">s
</mml:mi>
548 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
549 <mml:mi mathvariant=
"italic">A
</mml:mi>
555 </td></tr><tr><td align=
"left">
556 <code class=
"constant">GL_DST_ALPHA
</code>
557 </td><td align=
"left">
558 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
560 <mml:mfenced open=
"(" close=
")">
562 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
563 <mml:mi mathvariant=
"italic">d
</mml:mi>
565 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
566 <mml:mi mathvariant=
"italic">A
</mml:mi>
570 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
571 <mml:mi mathvariant=
"italic">d
</mml:mi>
573 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
574 <mml:mi mathvariant=
"italic">A
</mml:mi>
578 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
579 <mml:mi mathvariant=
"italic">d
</mml:mi>
581 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
582 <mml:mi mathvariant=
"italic">A
</mml:mi>
586 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
587 <mml:mi mathvariant=
"italic">d
</mml:mi>
589 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
590 <mml:mi mathvariant=
"italic">A
</mml:mi>
595 </td></tr><tr><td align=
"left">
596 <code class=
"constant">GL_ONE_MINUS_DST_ALPHA
</code>
597 </td><td align=
"left">
598 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
601 <mml:mfenced open=
"(" close=
")">
608 <mml:mfenced open=
"(" close=
")">
610 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
611 <mml:mi mathvariant=
"italic">d
</mml:mi>
613 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
614 <mml:mi mathvariant=
"italic">A
</mml:mi>
618 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
619 <mml:mi mathvariant=
"italic">d
</mml:mi>
621 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
622 <mml:mi mathvariant=
"italic">A
</mml:mi>
626 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
627 <mml:mi mathvariant=
"italic">d
</mml:mi>
629 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
630 <mml:mi mathvariant=
"italic">A
</mml:mi>
634 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
635 <mml:mi mathvariant=
"italic">d
</mml:mi>
637 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
638 <mml:mi mathvariant=
"italic">A
</mml:mi>
644 </td></tr><tr><td align=
"left">
645 <code class=
"constant">GL_CONSTANT_COLOR
</code>
646 </td><td align=
"left">
647 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
649 <mml:mfenced open=
"(" close=
")">
650 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
651 <mml:mi mathvariant=
"italic">c
</mml:mi>
653 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
654 <mml:mi mathvariant=
"italic">c
</mml:mi>
656 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
657 <mml:mi mathvariant=
"italic">c
</mml:mi>
659 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
660 <mml:mi mathvariant=
"italic">c
</mml:mi>
664 </td></tr><tr><td align=
"left">
665 <code class=
"constant">GL_ONE_MINUS_CONSTANT_COLOR
</code>
666 </td><td align=
"left">
667 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
670 <mml:mfenced open=
"(" close=
")">
677 <mml:mfenced open=
"(" close=
")">
678 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
679 <mml:mi mathvariant=
"italic">c
</mml:mi>
681 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
682 <mml:mi mathvariant=
"italic">c
</mml:mi>
684 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
685 <mml:mi mathvariant=
"italic">c
</mml:mi>
687 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
688 <mml:mi mathvariant=
"italic">c
</mml:mi>
693 </td></tr><tr><td align=
"left">
694 <code class=
"constant">GL_CONSTANT_ALPHA
</code>
695 </td><td align=
"left">
696 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
698 <mml:mfenced open=
"(" close=
")">
699 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
700 <mml:mi mathvariant=
"italic">c
</mml:mi>
702 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
703 <mml:mi mathvariant=
"italic">c
</mml:mi>
705 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
706 <mml:mi mathvariant=
"italic">c
</mml:mi>
708 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
709 <mml:mi mathvariant=
"italic">c
</mml:mi>
713 </td></tr><tr><td align=
"left">
714 <code class=
"constant">GL_ONE_MINUS_CONSTANT_ALPHA
</code>
715 </td><td align=
"left">
716 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
719 <mml:mfenced open=
"(" close=
")">
726 <mml:mfenced open=
"(" close=
")">
727 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
728 <mml:mi mathvariant=
"italic">c
</mml:mi>
730 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
731 <mml:mi mathvariant=
"italic">c
</mml:mi>
733 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
734 <mml:mi mathvariant=
"italic">c
</mml:mi>
736 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
737 <mml:mi mathvariant=
"italic">c
</mml:mi>
742 </td></tr><tr><td align=
"left">
743 <code class=
"constant">GL_SRC_ALPHA_SATURATE
</code>
744 </td><td align=
"left">
745 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
747 <mml:mfenced open=
"(" close=
")">
748 <mml:mi mathvariant=
"italic">i
</mml:mi>
749 <mml:mi mathvariant=
"italic">i
</mml:mi>
750 <mml:mi mathvariant=
"italic">i
</mml:mi>
754 </td></tr></tbody></table></div><p>
758 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
761 <mml:mi mathvariant=
"italic">i
</mml:mi>
765 <mml:mi mathvariant=
"italic">min
</mml:mi>
767 <mml:mfenced open=
"(" close=
")">
768 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
769 <mml:mi mathvariant=
"italic">s
</mml:mi>
772 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
773 <mml:mi mathvariant=
"italic">A
</mml:mi>
776 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
777 <mml:mi mathvariant=
"italic">d
</mml:mi>
782 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
783 <mml:mi mathvariant=
"italic">A
</mml:mi>
790 To determine the blended RGBA values of a pixel when drawing in RGBA mode,
791 the system uses the following equations:
794 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
797 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
798 <mml:mi mathvariant=
"italic">d
</mml:mi>
802 <mml:mi mathvariant=
"italic">min
</mml:mi>
804 <mml:mfenced open=
"(" close=
")">
805 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
806 <mml:mi mathvariant=
"italic">R
</mml:mi>
809 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
810 <mml:mi mathvariant=
"italic">s
</mml:mi>
813 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
814 <mml:mi mathvariant=
"italic">R
</mml:mi>
817 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
818 <mml:mi mathvariant=
"italic">d
</mml:mi>
821 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
822 <mml:mi mathvariant=
"italic">R
</mml:mi>
829 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
832 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
833 <mml:mi mathvariant=
"italic">d
</mml:mi>
837 <mml:mi mathvariant=
"italic">min
</mml:mi>
839 <mml:mfenced open=
"(" close=
")">
840 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
841 <mml:mi mathvariant=
"italic">G
</mml:mi>
844 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
845 <mml:mi mathvariant=
"italic">s
</mml:mi>
848 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
849 <mml:mi mathvariant=
"italic">G
</mml:mi>
852 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
853 <mml:mi mathvariant=
"italic">d
</mml:mi>
856 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
857 <mml:mi mathvariant=
"italic">G
</mml:mi>
864 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
867 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
868 <mml:mi mathvariant=
"italic">d
</mml:mi>
872 <mml:mi mathvariant=
"italic">min
</mml:mi>
874 <mml:mfenced open=
"(" close=
")">
875 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
876 <mml:mi mathvariant=
"italic">B
</mml:mi>
879 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
880 <mml:mi mathvariant=
"italic">s
</mml:mi>
883 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
884 <mml:mi mathvariant=
"italic">B
</mml:mi>
887 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
888 <mml:mi mathvariant=
"italic">d
</mml:mi>
891 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
892 <mml:mi mathvariant=
"italic">B
</mml:mi>
899 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
902 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
903 <mml:mi mathvariant=
"italic">d
</mml:mi>
907 <mml:mi mathvariant=
"italic">min
</mml:mi>
909 <mml:mfenced open=
"(" close=
")">
910 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
911 <mml:mi mathvariant=
"italic">A
</mml:mi>
914 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
915 <mml:mi mathvariant=
"italic">s
</mml:mi>
918 <mml:msub><mml:mi mathvariant=
"italic">s
</mml:mi>
919 <mml:mi mathvariant=
"italic">A
</mml:mi>
922 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
923 <mml:mi mathvariant=
"italic">d
</mml:mi>
926 <mml:msub><mml:mi mathvariant=
"italic">d
</mml:mi>
927 <mml:mi mathvariant=
"italic">A
</mml:mi>
936 Despite the apparent precision of the above equations,
937 blending arithmetic is not exactly specified,
938 because blending operates with imprecise integer color values.
940 a blend factor that should be equal to
1
941 is guaranteed not to modify its multiplicand,
942 and a blend factor equal to
0 reduces its multiplicand to
0.
944 when
<em class=
"parameter"><code>sfactor
</code></em> is
<code class=
"constant">GL_SRC_ALPHA
</code>,
945 <em class=
"parameter"><code>dfactor
</code></em> is
<code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>,
947 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
949 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
950 <mml:mi mathvariant=
"italic">s
</mml:mi>
954 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
956 <mml:msub><mml:mi mathvariant=
"italic">k
</mml:mi>
957 <mml:mi mathvariant=
"italic">A
</mml:mi>
960 the equations reduce to simple replacement:
963 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
966 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
967 <mml:mi mathvariant=
"italic">d
</mml:mi>
970 <mml:msub><mml:mi mathvariant=
"italic">R
</mml:mi>
971 <mml:mi mathvariant=
"italic">s
</mml:mi>
975 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
978 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
979 <mml:mi mathvariant=
"italic">d
</mml:mi>
982 <mml:msub><mml:mi mathvariant=
"italic">G
</mml:mi>
983 <mml:mi mathvariant=
"italic">s
</mml:mi>
987 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
990 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
991 <mml:mi mathvariant=
"italic">d
</mml:mi>
994 <mml:msub><mml:mi mathvariant=
"italic">B
</mml:mi>
995 <mml:mi mathvariant=
"italic">s
</mml:mi>
999 <mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
1002 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
1003 <mml:mi mathvariant=
"italic">d
</mml:mi>
1006 <mml:msub><mml:mi mathvariant=
"italic">A
</mml:mi>
1007 <mml:mi mathvariant=
"italic">s
</mml:mi>
1013 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"examples"></a><h2>Examples
</h2><p>
1015 Transparency is best implemented using blend function
1016 (
<code class=
"constant">GL_SRC_ALPHA
</code>,
<code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>)
1017 with primitives sorted from farthest to nearest.
1018 Note that this transparency calculation does not require
1019 the presence of alpha bitplanes in the frame buffer.
1022 (
<code class=
"constant">GL_SRC_ALPHA
</code>,
<code class=
"constant">GL_ONE_MINUS_SRC_ALPHA
</code>)
1023 is also useful for rendering antialiased points and lines
1026 Polygon antialiasing is optimized using blend function
1027 (
<code class=
"constant">GL_SRC_ALPHA_SATURATE
</code>,
<code class=
"constant">GL_ONE
</code>)
1028 with polygons sorted from nearest to farthest.
1029 (See the
<a class=
"citerefentry" href=
"glEnable.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glEnable
</span></span></a>,
<a class=
"citerefentry" href=
"glDisable.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glDisable
</span></span></a> reference page and the
1030 <code class=
"constant">GL_POLYGON_SMOOTH
</code> argument for information on polygon antialiasing.)
1031 Destination alpha bitplanes,
1032 which must be present for this blend function to operate correctly,
1033 store the accumulated coverage.
1034 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"notes"></a><h2>Notes
</h2><p>
1035 Incoming (source) alpha is correctly thought of as a material opacity,
1037 (
<mml:math xmlns:
mml=
"http://www.w3.org/1998/Math/MathML" overflow=
"scroll">
1039 <mml:msub><mml:mi mathvariant=
"italic">K
</mml:mi>
1040 <mml:mi mathvariant=
"italic">A
</mml:mi>
1043 representing complete opacity,
1044 to
0.0 (
0), representing complete
1047 When more than one color buffer is enabled for drawing,
1048 the GL performs blending separately for each enabled buffer,
1049 using the contents of that buffer for destination color.
1050 (See
<a class=
"citerefentry" href=
"glDrawBuffer.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glDrawBuffer
</span></span></a>.)
1052 Blending affects only RGBA rendering.
1053 It is ignored by color index renderers.
1055 <code class=
"constant">GL_CONSTANT_COLOR
</code>,
<code class=
"constant">GL_ONE_MINUS_CONSTANT_COLOR
</code>,
1056 <code class=
"constant">GL_CONSTANT_ALPHA
</code>,
<code class=
"constant">GL_ONE_MINUS_CONSTANT_ALPHA
</code> are available only
1057 if the GL version is
1.4 or greater or if the
<code class=
"code">ARB_imaging
</code> is
1058 supported by your implementation.
1060 <code class=
"constant">GL_SRC_COLOR
</code> and
<code class=
"constant">GL_ONE_MINUS_SRC_COLOR
</code> are valid only for
1061 <em class=
"parameter"><code>sfactor
</code></em> if the GL version is
1.4 or greater.
1063 <code class=
"constant">GL_DST_COLOR
</code> and
<code class=
"constant">GL_ONE_MINUS_DST_COLOR
</code> are valid only for
1064 <em class=
"parameter"><code>dfactor
</code></em> if the GL version is
1.4 or greater.
1065 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"errors"></a><h2>Errors
</h2><p>
1066 <code class=
"constant">GL_INVALID_ENUM
</code> is generated if either
<em class=
"parameter"><code>sfactor
</code></em> or
<em class=
"parameter"><code>dfactor
</code></em> is not an
1069 <code class=
"constant">GL_INVALID_OPERATION
</code> is generated if
<code class=
"function">glBlendFunc
</code>
1070 is executed between the execution of
<a class=
"citerefentry" href=
"glBegin.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBegin
</span></span></a>
1071 and the corresponding execution of
<a class=
"citerefentry" href=
"glEnd.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glEnd
</span></span></a>.
1072 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"associatedgets"></a><h2>Associated Gets
</h2><p>
1073 <a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a> with argument
<code class=
"constant">GL_BLEND_SRC
</code>
1075 <a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a> with argument
<code class=
"constant">GL_BLEND_DST
</code>
1077 <a class=
"citerefentry" href=
"glIsEnabled.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glIsEnabled
</span></span></a> with argument
<code class=
"constant">GL_BLEND
</code>
1079 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"seealso"></a><h2>See Also
</h2><p>
1080 <a class=
"citerefentry" href=
"glAlphaFunc.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glAlphaFunc
</span></span></a>,
1081 <a class=
"citerefentry" href=
"glBlendColor.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBlendColor
</span></span></a>,
1082 <a class=
"citerefentry" href=
"glBlendEquation.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBlendEquation
</span></span></a>,
1083 <a class=
"citerefentry" href=
"glBlendFuncSeparate.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBlendFuncSeparate
</span></span></a>,
1084 <a class=
"citerefentry" href=
"glClear.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glClear
</span></span></a>,
1085 <a class=
"citerefentry" href=
"glDrawBuffer.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glDrawBuffer
</span></span></a>,
1086 <a class=
"citerefentry" href=
"glEnable.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glEnable
</span></span></a>,
1087 <a class=
"citerefentry" href=
"glLogicOp.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glLogicOp
</span></span></a>,
1088 <a class=
"citerefentry" href=
"glStencilFunc.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glStencilFunc
</span></span></a>
1090 </p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"Copyright"></a><h2>Copyright
</h2><p>
1091 Copyright
<span class=
"trademark"></span>©
1991-
2006
1092 Silicon Graphics, Inc. This document is licensed under the SGI
1093 Free Software B License. For details, see
1094 <a class=
"ulink" href=
"http://oss.sgi.com/projects/FreeB/" target=
"_top">http://oss.sgi.com/projects/FreeB/
</a>.
1095 </p></div></div></body></html>