rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man2 / glBlendFunc.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3 "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4 <refentry id="glBlendFunc">
5 <refmeta>
6 <refmetainfo>
7 <copyright>
8 <year>1991-2006</year>
9 <holder>Silicon Graphics, Inc.</holder>
10 </copyright>
11 </refmetainfo>
12 <refentrytitle>glBlendFunc</refentrytitle>
13 <manvolnum>3G</manvolnum>
14 </refmeta>
15 <refnamediv>
16 <refname>glBlendFunc</refname>
17 <refpurpose>specify pixel arithmetic</refpurpose>
18 </refnamediv>
19 <refsynopsisdiv><title>C Specification</title>
20 <funcsynopsis>
21 <funcprototype>
22 <funcdef>void <function>glBlendFunc</function></funcdef>
23 <paramdef>GLenum <parameter>sfactor</parameter></paramdef>
24 <paramdef>GLenum <parameter>dfactor</parameter></paramdef>
25 </funcprototype>
26 </funcsynopsis>
27 </refsynopsisdiv>
28 <!-- eqn: ignoring delim $$ -->
29 <refsect1 id="parameters"><title>Parameters</title>
30 <variablelist>
31 <varlistentry>
32 <term><parameter>sfactor</parameter></term>
33 <listitem>
34 <para>
35 Specifies how the red, green, blue,
36 and alpha source blending factors are computed.
37 The following symbolic constants are accepted:
38 <constant>GL_ZERO</constant>,
39 <constant>GL_ONE</constant>,
40 <constant>GL_SRC_COLOR</constant>,
41 <constant>GL_ONE_MINUS_SRC_COLOR</constant>,
42 <constant>GL_DST_COLOR</constant>,
43 <constant>GL_ONE_MINUS_DST_COLOR</constant>,
44 <constant>GL_SRC_ALPHA</constant>,
45 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
46 <constant>GL_DST_ALPHA</constant>,
47 <constant>GL_ONE_MINUS_DST_ALPHA</constant>,
48 <constant>GL_CONSTANT_COLOR</constant>,
49 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>,
50 <constant>GL_CONSTANT_ALPHA</constant>,
51 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>, and
52 <constant>GL_SRC_ALPHA_SATURATE</constant>.
53 The initial value is <constant>GL_ONE</constant>.
54 </para>
55 </listitem>
56 </varlistentry>
57 <varlistentry>
58 <term><parameter>dfactor</parameter></term>
59 <listitem>
60 <para>
61 Specifies how the red, green, blue,
62 and alpha destination blending factors are computed.
63 The following symbolic constants are accepted:
64 <constant>GL_ZERO</constant>,
65 <constant>GL_ONE</constant>,
66 <constant>GL_SRC_COLOR</constant>,
67 <constant>GL_ONE_MINUS_SRC_COLOR</constant>,
68 <constant>GL_DST_COLOR</constant>,
69 <constant>GL_ONE_MINUS_DST_COLOR</constant>,
70 <constant>GL_SRC_ALPHA</constant>,
71 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
72 <constant>GL_DST_ALPHA</constant>,
73 <constant>GL_ONE_MINUS_DST_ALPHA</constant>.
74 <constant>GL_CONSTANT_COLOR</constant>,
75 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>,
76 <constant>GL_CONSTANT_ALPHA</constant>, and
77 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>.
78 The initial value is <constant>GL_ZERO</constant>.
79 </para>
80 </listitem>
81 </varlistentry>
82 </variablelist>
83 </refsect1>
84 <refsect1 id="description"><title>Description</title>
85 <para>
86 In RGBA mode, pixels can be drawn using a function that blends
87 the incoming (source) RGBA values with the RGBA values
88 that are already in the frame buffer (the destination values).
89 Blending is initially disabled.
90 Use <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glDisable</refentrytitle></citerefentry> with argument <constant>GL_BLEND</constant>
91 to enable and disable blending.
92 </para>
93 <para>
94 <function>glBlendFunc</function> defines the operation of blending when it is enabled.
95 <parameter>sfactor</parameter> specifies which method is used to scale the
96 source color components.
97 <parameter>dfactor</parameter> specifies which method is used to scale the
98 destination color components.
99 The possible methods are described in the following table.
100 Each method defines four scale factors,
101 one each for red, green, blue, and alpha.
102 In the table and in subsequent equations, source and destination
103 color components are referred to as
104 <inlineequation><mml:math>
105 <!-- eqn: ( R sub s , G sub s , B sub s , A sub s ):-->
106 <mml:mfenced open="(" close=")">
107 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
108 <mml:mi mathvariant="italic">s</mml:mi>
109 </mml:msub>
110 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
111 <mml:mi mathvariant="italic">s</mml:mi>
112 </mml:msub>
113 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
114 <mml:mi mathvariant="italic">s</mml:mi>
115 </mml:msub>
116 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
117 <mml:mi mathvariant="italic">s</mml:mi>
118 </mml:msub>
119 </mml:mfenced>
120 </mml:math></inlineequation>
121 and
122 <inlineequation><mml:math>
123 <!-- eqn: ( R sub d , G sub d , B sub d , A sub d ):-->
124 <mml:mfenced open="(" close=")">
125 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
126 <mml:mi mathvariant="italic">d</mml:mi>
127 </mml:msub>
128 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
129 <mml:mi mathvariant="italic">d</mml:mi>
130 </mml:msub>
131 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
132 <mml:mi mathvariant="italic">d</mml:mi>
133 </mml:msub>
134 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
135 <mml:mi mathvariant="italic">d</mml:mi>
136 </mml:msub>
137 </mml:mfenced>
138 </mml:math></inlineequation>.
139 The color specified by <citerefentry><refentrytitle>glBlendColor</refentrytitle></citerefentry> is referred to as
140 <inlineequation><mml:math>
141 <!-- eqn: ( R sub c , G sub c , B sub c , A sub c ):-->
142 <mml:mfenced open="(" close=")">
143 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
144 <mml:mi mathvariant="italic">c</mml:mi>
145 </mml:msub>
146 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
147 <mml:mi mathvariant="italic">c</mml:mi>
148 </mml:msub>
149 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
150 <mml:mi mathvariant="italic">c</mml:mi>
151 </mml:msub>
152 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
153 <mml:mi mathvariant="italic">c</mml:mi>
154 </mml:msub>
155 </mml:mfenced>
156 </mml:math></inlineequation>.
157 They are understood to have integer values between 0 and
158 <inlineequation><mml:math>
159 <!-- eqn: ( k sub R , k sub G , k sub B , k sub A ):-->
160 <mml:mfenced open="(" close=")">
161 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
162 <mml:mi mathvariant="italic">R</mml:mi>
163 </mml:msub>
164 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
165 <mml:mi mathvariant="italic">G</mml:mi>
166 </mml:msub>
167 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
168 <mml:mi mathvariant="italic">B</mml:mi>
169 </mml:msub>
170 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
171 <mml:mi mathvariant="italic">A</mml:mi>
172 </mml:msub>
173 </mml:mfenced>
174 </mml:math></inlineequation>,
175 where
176 </para>
177 <para>
178 <para>
179 <inlineequation><mml:math>
180 <!-- eqn: k sub c = 2 sup {m sub c} - 1:-->
181 <mml:mrow>
182 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
183 <mml:mi mathvariant="italic">c</mml:mi>
184 </mml:msub>
185 <mml:mo>=</mml:mo>
186 <mml:mrow>
187 <mml:msup><mml:mn>2</mml:mn>
188 <mml:mfenced open="" close="">
189 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
190 <mml:mi mathvariant="italic">c</mml:mi>
191 </mml:msub>
192 </mml:mfenced>
193 </mml:msup>
194 <mml:mo>-</mml:mo>
195 <mml:mn>1</mml:mn>
196 </mml:mrow>
197 </mml:mrow>
198 </mml:math></inlineequation>
199 </para>
200 </para>
201 <para>
202 and
203 <inlineequation><mml:math>
204 <!-- eqn: ( m sub R , m sub G , m sub B , m sub A ):-->
205 <mml:mfenced open="(" close=")">
206 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
207 <mml:mi mathvariant="italic">R</mml:mi>
208 </mml:msub>
209 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
210 <mml:mi mathvariant="italic">G</mml:mi>
211 </mml:msub>
212 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
213 <mml:mi mathvariant="italic">B</mml:mi>
214 </mml:msub>
215 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
216 <mml:mi mathvariant="italic">A</mml:mi>
217 </mml:msub>
218 </mml:mfenced>
219 </mml:math></inlineequation>
220 is the number of red,
221 green,
222 blue,
223 and alpha bitplanes.
224 </para>
225 <para>
226 Source and destination scale factors are referred to as
227 <inlineequation><mml:math>
228 <!-- eqn: ( s sub R , s sub G , s sub B , s sub A ):-->
229 <mml:mfenced open="(" close=")">
230 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
231 <mml:mi mathvariant="italic">R</mml:mi>
232 </mml:msub>
233 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
234 <mml:mi mathvariant="italic">G</mml:mi>
235 </mml:msub>
236 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
237 <mml:mi mathvariant="italic">B</mml:mi>
238 </mml:msub>
239 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
240 <mml:mi mathvariant="italic">A</mml:mi>
241 </mml:msub>
242 </mml:mfenced>
243 </mml:math></inlineequation>
244 and
245 <inlineequation><mml:math>
246 <!-- eqn: ( d sub R , d sub G , d sub B , d sub A ):-->
247 <mml:mfenced open="(" close=")">
248 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
249 <mml:mi mathvariant="italic">R</mml:mi>
250 </mml:msub>
251 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
252 <mml:mi mathvariant="italic">G</mml:mi>
253 </mml:msub>
254 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
255 <mml:mi mathvariant="italic">B</mml:mi>
256 </mml:msub>
257 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
258 <mml:mi mathvariant="italic">A</mml:mi>
259 </mml:msub>
260 </mml:mfenced>
261 </mml:math></inlineequation>.
262 The scale factors described in the table,
263 denoted
264 <inlineequation><mml:math>
265 <!-- eqn: ( f sub R , f sub G , f sub B , f sub A ):-->
266 <mml:mfenced open="(" close=")">
267 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
268 <mml:mi mathvariant="italic">R</mml:mi>
269 </mml:msub>
270 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
271 <mml:mi mathvariant="italic">G</mml:mi>
272 </mml:msub>
273 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
274 <mml:mi mathvariant="italic">B</mml:mi>
275 </mml:msub>
276 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
277 <mml:mi mathvariant="italic">A</mml:mi>
278 </mml:msub>
279 </mml:mfenced>
280 </mml:math></inlineequation>,
281 represent either source or destination factors.
282 All scale factors have range
283 <inlineequation><mml:math>
284 <!-- eqn: [0,1]:-->
285 <mml:mfenced open="[" close="]">
286 <mml:mn>0</mml:mn>
287 <mml:mn>1</mml:mn>
288 </mml:mfenced>
289 </mml:math></inlineequation>.
290 </para>
291 <para>
292 </para>
293 <informaltable frame="topbot">
294 <tgroup cols="2" align="left">
295 <colspec/>
296 <colspec/>
297 <thead>
298 <row>
299 <entry rowsep="1" align="left"><emphasis role="bold">
300 Parameter
301 </emphasis></entry>
302 <entry rowsep="1" align="left"><emphasis role="bold">
303 <inlineequation><mml:math>
304 <!-- eqn: ( f sub R , f sub G , f sub B , f sub A ):-->
305 <mml:mfenced open="(" close=")">
306 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
307 <mml:mi mathvariant="italic">R</mml:mi>
308 </mml:msub>
309 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
310 <mml:mi mathvariant="italic">G</mml:mi>
311 </mml:msub>
312 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
313 <mml:mi mathvariant="italic">B</mml:mi>
314 </mml:msub>
315 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
316 <mml:mi mathvariant="italic">A</mml:mi>
317 </mml:msub>
318 </mml:mfenced>
319 </mml:math></inlineequation>
320 </emphasis></entry>
321 </row>
322 </thead>
323 <tbody>
324 <row>
325 <entry align="left">
326 <constant>GL_ZERO</constant>
327 </entry>
328 <entry align="left">
329 <inlineequation><mml:math>
330 <!-- eqn: ( 0, 0, 0, 0 ):-->
331 <mml:mfenced open="(" close=")">
332 <mml:mn>0</mml:mn>
333 <mml:mn>0</mml:mn>
334 <mml:mn>0</mml:mn>
335 <mml:mn>0</mml:mn>
336 </mml:mfenced>
337 </mml:math></inlineequation>
338 </entry>
339 </row>
340 <row>
341 <entry align="left">
342 <constant>GL_ONE</constant>
343 </entry>
344 <entry align="left">
345 <inlineequation><mml:math>
346 <!-- eqn: ( 1, 1, 1, 1 ):-->
347 <mml:mfenced open="(" close=")">
348 <mml:mn>1</mml:mn>
349 <mml:mn>1</mml:mn>
350 <mml:mn>1</mml:mn>
351 <mml:mn>1</mml:mn>
352 </mml:mfenced>
353 </mml:math></inlineequation>
354 </entry>
355 </row>
356 <row>
357 <entry align="left">
358 <constant>GL_SRC_COLOR</constant>
359 </entry>
360 <entry align="left">
361 <inlineequation><mml:math>
362 <!-- eqn: ( R sub s / k sub R , G sub s / k sub G , B sub s / k sub B , A sub s / k sub A ):-->
363 <mml:mfenced open="(" close=")">
364 <mml:mfrac>
365 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
366 <mml:mi mathvariant="italic">s</mml:mi>
367 </mml:msub>
368 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
369 <mml:mi mathvariant="italic">R</mml:mi>
370 </mml:msub>
371 </mml:mfrac>
372 <mml:mfrac>
373 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
374 <mml:mi mathvariant="italic">s</mml:mi>
375 </mml:msub>
376 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
377 <mml:mi mathvariant="italic">G</mml:mi>
378 </mml:msub>
379 </mml:mfrac>
380 <mml:mfrac>
381 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
382 <mml:mi mathvariant="italic">s</mml:mi>
383 </mml:msub>
384 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
385 <mml:mi mathvariant="italic">B</mml:mi>
386 </mml:msub>
387 </mml:mfrac>
388 <mml:mfrac>
389 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
390 <mml:mi mathvariant="italic">s</mml:mi>
391 </mml:msub>
392 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
393 <mml:mi mathvariant="italic">A</mml:mi>
394 </mml:msub>
395 </mml:mfrac>
396 </mml:mfenced>
397 </mml:math></inlineequation>
398 </entry>
399 </row>
400 <row>
401 <entry align="left">
402 <constant>GL_ONE_MINUS_SRC_COLOR</constant>
403 </entry>
404 <entry align="left">
405 <inlineequation><mml:math>
406 <!-- eqn: ( 1, 1, 1, 1 ) - (R sub s / k sub R , G sub s / k sub G , B sub s / k sub B , A sub s / k sub A ):-->
407 <mml:mrow>
408 <mml:mfenced open="(" close=")">
409 <mml:mn>1</mml:mn>
410 <mml:mn>1</mml:mn>
411 <mml:mn>1</mml:mn>
412 <mml:mn>1</mml:mn>
413 </mml:mfenced>
414 <mml:mo>-</mml:mo>
415 <mml:mfenced open="(" close=")">
416 <mml:mfrac>
417 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
418 <mml:mi mathvariant="italic">s</mml:mi>
419 </mml:msub>
420 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
421 <mml:mi mathvariant="italic">R</mml:mi>
422 </mml:msub>
423 </mml:mfrac>
424 <mml:mfrac>
425 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
426 <mml:mi mathvariant="italic">s</mml:mi>
427 </mml:msub>
428 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
429 <mml:mi mathvariant="italic">G</mml:mi>
430 </mml:msub>
431 </mml:mfrac>
432 <mml:mfrac>
433 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
434 <mml:mi mathvariant="italic">s</mml:mi>
435 </mml:msub>
436 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
437 <mml:mi mathvariant="italic">B</mml:mi>
438 </mml:msub>
439 </mml:mfrac>
440 <mml:mfrac>
441 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
442 <mml:mi mathvariant="italic">s</mml:mi>
443 </mml:msub>
444 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
445 <mml:mi mathvariant="italic">A</mml:mi>
446 </mml:msub>
447 </mml:mfrac>
448 </mml:mfenced>
449 </mml:mrow>
450 </mml:math></inlineequation>
451 </entry>
452 </row>
453 <row>
454 <entry align="left">
455 <constant>GL_DST_COLOR</constant>
456 </entry>
457 <entry align="left">
458 <inlineequation><mml:math>
459 <!-- eqn: ( R sub d / k sub R , G sub d / k sub G , B sub d / k sub B , A sub d / k sub A ):-->
460 <mml:mfenced open="(" close=")">
461 <mml:mfrac>
462 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
463 <mml:mi mathvariant="italic">d</mml:mi>
464 </mml:msub>
465 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
466 <mml:mi mathvariant="italic">R</mml:mi>
467 </mml:msub>
468 </mml:mfrac>
469 <mml:mfrac>
470 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
471 <mml:mi mathvariant="italic">d</mml:mi>
472 </mml:msub>
473 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
474 <mml:mi mathvariant="italic">G</mml:mi>
475 </mml:msub>
476 </mml:mfrac>
477 <mml:mfrac>
478 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
479 <mml:mi mathvariant="italic">d</mml:mi>
480 </mml:msub>
481 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
482 <mml:mi mathvariant="italic">B</mml:mi>
483 </mml:msub>
484 </mml:mfrac>
485 <mml:mfrac>
486 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
487 <mml:mi mathvariant="italic">d</mml:mi>
488 </mml:msub>
489 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
490 <mml:mi mathvariant="italic">A</mml:mi>
491 </mml:msub>
492 </mml:mfrac>
493 </mml:mfenced>
494 </mml:math></inlineequation>
495 </entry>
496 </row>
497 <row>
498 <entry align="left">
499 <constant>GL_ONE_MINUS_DST_COLOR</constant>
500 </entry>
501 <entry align="left">
502 <inlineequation><mml:math>
503 <!-- eqn: ( 1, 1, 1, 1 ) - (R sub d / k sub R , G sub d / k sub G , B sub d / k sub B , A sub d / k sub A ):-->
504 <mml:mrow>
505 <mml:mfenced open="(" close=")">
506 <mml:mn>1</mml:mn>
507 <mml:mn>1</mml:mn>
508 <mml:mn>1</mml:mn>
509 <mml:mn>1</mml:mn>
510 </mml:mfenced>
511 <mml:mo>-</mml:mo>
512 <mml:mfenced open="(" close=")">
513 <mml:mfrac>
514 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
515 <mml:mi mathvariant="italic">d</mml:mi>
516 </mml:msub>
517 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
518 <mml:mi mathvariant="italic">R</mml:mi>
519 </mml:msub>
520 </mml:mfrac>
521 <mml:mfrac>
522 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
523 <mml:mi mathvariant="italic">d</mml:mi>
524 </mml:msub>
525 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
526 <mml:mi mathvariant="italic">G</mml:mi>
527 </mml:msub>
528 </mml:mfrac>
529 <mml:mfrac>
530 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
531 <mml:mi mathvariant="italic">d</mml:mi>
532 </mml:msub>
533 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
534 <mml:mi mathvariant="italic">B</mml:mi>
535 </mml:msub>
536 </mml:mfrac>
537 <mml:mfrac>
538 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
539 <mml:mi mathvariant="italic">d</mml:mi>
540 </mml:msub>
541 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
542 <mml:mi mathvariant="italic">A</mml:mi>
543 </mml:msub>
544 </mml:mfrac>
545 </mml:mfenced>
546 </mml:mrow>
547 </mml:math></inlineequation>
548 </entry>
549 </row>
550 <row>
551 <entry align="left">
552 <constant>GL_SRC_ALPHA</constant>
553 </entry>
554 <entry align="left">
555 <inlineequation><mml:math>
556 <!-- eqn: ( A sub s / k sub A , A sub s / k sub A , A sub s / k sub A , A sub s / k sub A ):-->
557 <mml:mfenced open="(" close=")">
558 <mml:mfrac>
559 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
560 <mml:mi mathvariant="italic">s</mml:mi>
561 </mml:msub>
562 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
563 <mml:mi mathvariant="italic">A</mml:mi>
564 </mml:msub>
565 </mml:mfrac>
566 <mml:mfrac>
567 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
568 <mml:mi mathvariant="italic">s</mml:mi>
569 </mml:msub>
570 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
571 <mml:mi mathvariant="italic">A</mml:mi>
572 </mml:msub>
573 </mml:mfrac>
574 <mml:mfrac>
575 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
576 <mml:mi mathvariant="italic">s</mml:mi>
577 </mml:msub>
578 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
579 <mml:mi mathvariant="italic">A</mml:mi>
580 </mml:msub>
581 </mml:mfrac>
582 <mml:mfrac>
583 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
584 <mml:mi mathvariant="italic">s</mml:mi>
585 </mml:msub>
586 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
587 <mml:mi mathvariant="italic">A</mml:mi>
588 </mml:msub>
589 </mml:mfrac>
590 </mml:mfenced>
591 </mml:math></inlineequation>
592 </entry>
593 </row>
594 <row>
595 <entry align="left">
596 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>
597 </entry>
598 <entry align="left">
599 <inlineequation><mml:math>
600 <!-- eqn: ( 1, 1, 1, 1 ) - (A sub s / k sub A , A sub s / k sub A , A sub s / k sub A , A sub s / k sub A ):-->
601 <mml:mrow>
602 <mml:mfenced open="(" close=")">
603 <mml:mn>1</mml:mn>
604 <mml:mn>1</mml:mn>
605 <mml:mn>1</mml:mn>
606 <mml:mn>1</mml:mn>
607 </mml:mfenced>
608 <mml:mo>-</mml:mo>
609 <mml:mfenced open="(" close=")">
610 <mml:mfrac>
611 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
612 <mml:mi mathvariant="italic">s</mml:mi>
613 </mml:msub>
614 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
615 <mml:mi mathvariant="italic">A</mml:mi>
616 </mml:msub>
617 </mml:mfrac>
618 <mml:mfrac>
619 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
620 <mml:mi mathvariant="italic">s</mml:mi>
621 </mml:msub>
622 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
623 <mml:mi mathvariant="italic">A</mml:mi>
624 </mml:msub>
625 </mml:mfrac>
626 <mml:mfrac>
627 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
628 <mml:mi mathvariant="italic">s</mml:mi>
629 </mml:msub>
630 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
631 <mml:mi mathvariant="italic">A</mml:mi>
632 </mml:msub>
633 </mml:mfrac>
634 <mml:mfrac>
635 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
636 <mml:mi mathvariant="italic">s</mml:mi>
637 </mml:msub>
638 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
639 <mml:mi mathvariant="italic">A</mml:mi>
640 </mml:msub>
641 </mml:mfrac>
642 </mml:mfenced>
643 </mml:mrow>
644 </mml:math></inlineequation>
645 </entry>
646 </row>
647 <row>
648 <entry align="left">
649 <constant>GL_DST_ALPHA</constant>
650 </entry>
651 <entry align="left">
652 <inlineequation><mml:math>
653 <!-- eqn: ( A sub d / k sub A , A sub d / k sub A , A sub d / k sub A , A sub d / k sub A ):-->
654 <mml:mfenced open="(" close=")">
655 <mml:mfrac>
656 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
657 <mml:mi mathvariant="italic">d</mml:mi>
658 </mml:msub>
659 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
660 <mml:mi mathvariant="italic">A</mml:mi>
661 </mml:msub>
662 </mml:mfrac>
663 <mml:mfrac>
664 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
665 <mml:mi mathvariant="italic">d</mml:mi>
666 </mml:msub>
667 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
668 <mml:mi mathvariant="italic">A</mml:mi>
669 </mml:msub>
670 </mml:mfrac>
671 <mml:mfrac>
672 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
673 <mml:mi mathvariant="italic">d</mml:mi>
674 </mml:msub>
675 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
676 <mml:mi mathvariant="italic">A</mml:mi>
677 </mml:msub>
678 </mml:mfrac>
679 <mml:mfrac>
680 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
681 <mml:mi mathvariant="italic">d</mml:mi>
682 </mml:msub>
683 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
684 <mml:mi mathvariant="italic">A</mml:mi>
685 </mml:msub>
686 </mml:mfrac>
687 </mml:mfenced>
688 </mml:math></inlineequation>
689 </entry>
690 </row>
691 <row>
692 <entry align="left">
693 <constant>GL_ONE_MINUS_DST_ALPHA</constant>
694 </entry>
695 <entry align="left">
696 <inlineequation><mml:math>
697 <!-- eqn: ( 1, 1, 1, 1 ) - ( A sub d / k sub A , A sub d / k sub A , A sub d / k sub A , A sub d / k sub A ):-->
698 <mml:mrow>
699 <mml:mfenced open="(" close=")">
700 <mml:mn>1</mml:mn>
701 <mml:mn>1</mml:mn>
702 <mml:mn>1</mml:mn>
703 <mml:mn>1</mml:mn>
704 </mml:mfenced>
705 <mml:mo>-</mml:mo>
706 <mml:mfenced open="(" close=")">
707 <mml:mfrac>
708 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
709 <mml:mi mathvariant="italic">d</mml:mi>
710 </mml:msub>
711 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
712 <mml:mi mathvariant="italic">A</mml:mi>
713 </mml:msub>
714 </mml:mfrac>
715 <mml:mfrac>
716 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
717 <mml:mi mathvariant="italic">d</mml:mi>
718 </mml:msub>
719 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
720 <mml:mi mathvariant="italic">A</mml:mi>
721 </mml:msub>
722 </mml:mfrac>
723 <mml:mfrac>
724 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
725 <mml:mi mathvariant="italic">d</mml:mi>
726 </mml:msub>
727 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
728 <mml:mi mathvariant="italic">A</mml:mi>
729 </mml:msub>
730 </mml:mfrac>
731 <mml:mfrac>
732 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
733 <mml:mi mathvariant="italic">d</mml:mi>
734 </mml:msub>
735 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
736 <mml:mi mathvariant="italic">A</mml:mi>
737 </mml:msub>
738 </mml:mfrac>
739 </mml:mfenced>
740 </mml:mrow>
741 </mml:math></inlineequation>
742 </entry>
743 </row>
744 <row>
745 <entry align="left">
746 <constant>GL_CONSTANT_COLOR</constant>
747 </entry>
748 <entry align="left">
749 <inlineequation><mml:math>
750 <!-- eqn: ( R sub c, G sub c, B sub c, A sub c ):-->
751 <mml:mfenced open="(" close=")">
752 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
753 <mml:mi mathvariant="italic">c</mml:mi>
754 </mml:msub>
755 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
756 <mml:mi mathvariant="italic">c</mml:mi>
757 </mml:msub>
758 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
759 <mml:mi mathvariant="italic">c</mml:mi>
760 </mml:msub>
761 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
762 <mml:mi mathvariant="italic">c</mml:mi>
763 </mml:msub>
764 </mml:mfenced>
765 </mml:math></inlineequation>
766 </entry>
767 </row>
768 <row>
769 <entry align="left">
770 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>
771 </entry>
772 <entry align="left">
773 <inlineequation><mml:math>
774 <!-- eqn: ( 1, 1, 1, 1 ) - ( R sub c, G sub c, B sub c, A sub c ):-->
775 <mml:mrow>
776 <mml:mfenced open="(" close=")">
777 <mml:mn>1</mml:mn>
778 <mml:mn>1</mml:mn>
779 <mml:mn>1</mml:mn>
780 <mml:mn>1</mml:mn>
781 </mml:mfenced>
782 <mml:mo>-</mml:mo>
783 <mml:mfenced open="(" close=")">
784 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
785 <mml:mi mathvariant="italic">c</mml:mi>
786 </mml:msub>
787 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
788 <mml:mi mathvariant="italic">c</mml:mi>
789 </mml:msub>
790 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
791 <mml:mi mathvariant="italic">c</mml:mi>
792 </mml:msub>
793 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
794 <mml:mi mathvariant="italic">c</mml:mi>
795 </mml:msub>
796 </mml:mfenced>
797 </mml:mrow>
798 </mml:math></inlineequation>
799 </entry>
800 </row>
801 <row>
802 <entry align="left">
803 <constant>GL_CONSTANT_ALPHA</constant>
804 </entry>
805 <entry align="left">
806 <inlineequation><mml:math>
807 <!-- eqn: ( A sub c, A sub c, A sub c, A sub c ):-->
808 <mml:mfenced open="(" close=")">
809 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
810 <mml:mi mathvariant="italic">c</mml:mi>
811 </mml:msub>
812 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
813 <mml:mi mathvariant="italic">c</mml:mi>
814 </mml:msub>
815 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
816 <mml:mi mathvariant="italic">c</mml:mi>
817 </mml:msub>
818 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
819 <mml:mi mathvariant="italic">c</mml:mi>
820 </mml:msub>
821 </mml:mfenced>
822 </mml:math></inlineequation>
823 </entry>
824 </row>
825 <row>
826 <entry align="left">
827 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>
828 </entry>
829 <entry align="left">
830 <inlineequation><mml:math>
831 <!-- eqn: ( 1, 1, 1, 1 ) - ( A sub c, A sub c, A sub c, A sub c ):-->
832 <mml:mrow>
833 <mml:mfenced open="(" close=")">
834 <mml:mn>1</mml:mn>
835 <mml:mn>1</mml:mn>
836 <mml:mn>1</mml:mn>
837 <mml:mn>1</mml:mn>
838 </mml:mfenced>
839 <mml:mo>-</mml:mo>
840 <mml:mfenced open="(" close=")">
841 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
842 <mml:mi mathvariant="italic">c</mml:mi>
843 </mml:msub>
844 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
845 <mml:mi mathvariant="italic">c</mml:mi>
846 </mml:msub>
847 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
848 <mml:mi mathvariant="italic">c</mml:mi>
849 </mml:msub>
850 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
851 <mml:mi mathvariant="italic">c</mml:mi>
852 </mml:msub>
853 </mml:mfenced>
854 </mml:mrow>
855 </mml:math></inlineequation>
856 </entry>
857 </row>
858 <row>
859 <entry align="left">
860 <constant>GL_SRC_ALPHA_SATURATE</constant>
861 </entry>
862 <entry align="left">
863 <inlineequation><mml:math>
864 <!-- eqn: ( i, i, i, 1 ):-->
865 <mml:mfenced open="(" close=")">
866 <mml:mi mathvariant="italic">i</mml:mi>
867 <mml:mi mathvariant="italic">i</mml:mi>
868 <mml:mi mathvariant="italic">i</mml:mi>
869 <mml:mn>1</mml:mn>
870 </mml:mfenced>
871 </mml:math></inlineequation>
872 </entry>
873 </row>
874 </tbody>
875 </tgroup>
876 </informaltable>
877 <para>
878 In the table,
879 </para>
880 <para>
881 <para>
882 <inlineequation><mml:math>
883 <!-- eqn: i = min (A sub s , k sub A - A sub d ) / k sub A:-->
884 <mml:mrow>
885 <mml:mi mathvariant="italic">i</mml:mi>
886 <mml:mo>=</mml:mo>
887 <mml:mfrac>
888 <mml:mrow>
889 <mml:mi mathvariant="italic">min</mml:mi>
890 <mml:mo>&af;</mml:mo>
891 <mml:mfenced open="(" close=")">
892 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
893 <mml:mi mathvariant="italic">s</mml:mi>
894 </mml:msub>
895 <mml:mrow>
896 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
897 <mml:mi mathvariant="italic">A</mml:mi>
898 </mml:msub>
899 <mml:mo>-</mml:mo>
900 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
901 <mml:mi mathvariant="italic">d</mml:mi>
902 </mml:msub>
903 </mml:mrow>
904 </mml:mfenced>
905 </mml:mrow>
906 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
907 <mml:mi mathvariant="italic">A</mml:mi>
908 </mml:msub>
909 </mml:mfrac>
910 </mml:mrow>
911 </mml:math></inlineequation>
912 </para>
913 </para>
914 <para>
915 To determine the blended RGBA values of a pixel when drawing in RGBA mode,
916 the system uses the following equations:
917 </para>
918 <para>
919 <para>
920 <inlineequation><mml:math>
921 <!-- eqn: R sub d = min ( k sub R, R sub s s sub R + R sub d d sub R ):-->
922 <mml:mrow>
923 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
924 <mml:mi mathvariant="italic">d</mml:mi>
925 </mml:msub>
926 <mml:mo>=</mml:mo>
927 <mml:mrow>
928 <mml:mi mathvariant="italic">min</mml:mi>
929 <mml:mo>&af;</mml:mo>
930 <mml:mfenced open="(" close=")">
931 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
932 <mml:mi mathvariant="italic">R</mml:mi>
933 </mml:msub>
934 <mml:mrow>
935 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
936 <mml:mi mathvariant="italic">s</mml:mi>
937 </mml:msub>
938 <mml:mo>&it;</mml:mo>
939 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
940 <mml:mi mathvariant="italic">R</mml:mi>
941 </mml:msub>
942 <mml:mo>+</mml:mo>
943 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
944 <mml:mi mathvariant="italic">d</mml:mi>
945 </mml:msub>
946 <mml:mo>&it;</mml:mo>
947 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
948 <mml:mi mathvariant="italic">R</mml:mi>
949 </mml:msub>
950 </mml:mrow>
951 </mml:mfenced>
952 </mml:mrow>
953 </mml:mrow>
954 </mml:math></inlineequation>
955 <inlineequation><mml:math>
956 <!-- eqn: G sub d = min ( k sub G, G sub s s sub G + G sub d d sub G ):-->
957 <mml:mrow>
958 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
959 <mml:mi mathvariant="italic">d</mml:mi>
960 </mml:msub>
961 <mml:mo>=</mml:mo>
962 <mml:mrow>
963 <mml:mi mathvariant="italic">min</mml:mi>
964 <mml:mo>&af;</mml:mo>
965 <mml:mfenced open="(" close=")">
966 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
967 <mml:mi mathvariant="italic">G</mml:mi>
968 </mml:msub>
969 <mml:mrow>
970 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
971 <mml:mi mathvariant="italic">s</mml:mi>
972 </mml:msub>
973 <mml:mo>&it;</mml:mo>
974 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
975 <mml:mi mathvariant="italic">G</mml:mi>
976 </mml:msub>
977 <mml:mo>+</mml:mo>
978 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
979 <mml:mi mathvariant="italic">d</mml:mi>
980 </mml:msub>
981 <mml:mo>&it;</mml:mo>
982 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
983 <mml:mi mathvariant="italic">G</mml:mi>
984 </mml:msub>
985 </mml:mrow>
986 </mml:mfenced>
987 </mml:mrow>
988 </mml:mrow>
989 </mml:math></inlineequation>
990 <inlineequation><mml:math>
991 <!-- eqn: B sub d = min ( k sub B, B sub s s sub B + B sub d d sub B ):-->
992 <mml:mrow>
993 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
994 <mml:mi mathvariant="italic">d</mml:mi>
995 </mml:msub>
996 <mml:mo>=</mml:mo>
997 <mml:mrow>
998 <mml:mi mathvariant="italic">min</mml:mi>
999 <mml:mo>&af;</mml:mo>
1000 <mml:mfenced open="(" close=")">
1001 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1002 <mml:mi mathvariant="italic">B</mml:mi>
1003 </mml:msub>
1004 <mml:mrow>
1005 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1006 <mml:mi mathvariant="italic">s</mml:mi>
1007 </mml:msub>
1008 <mml:mo>&it;</mml:mo>
1009 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1010 <mml:mi mathvariant="italic">B</mml:mi>
1011 </mml:msub>
1012 <mml:mo>+</mml:mo>
1013 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1014 <mml:mi mathvariant="italic">d</mml:mi>
1015 </mml:msub>
1016 <mml:mo>&it;</mml:mo>
1017 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1018 <mml:mi mathvariant="italic">B</mml:mi>
1019 </mml:msub>
1020 </mml:mrow>
1021 </mml:mfenced>
1022 </mml:mrow>
1023 </mml:mrow>
1024 </mml:math></inlineequation>
1025 <inlineequation><mml:math>
1026 <!-- eqn: A sub d = min ( k sub A, A sub s s sub A + A sub d d sub A ):-->
1027 <mml:mrow>
1028 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1029 <mml:mi mathvariant="italic">d</mml:mi>
1030 </mml:msub>
1031 <mml:mo>=</mml:mo>
1032 <mml:mrow>
1033 <mml:mi mathvariant="italic">min</mml:mi>
1034 <mml:mo>&af;</mml:mo>
1035 <mml:mfenced open="(" close=")">
1036 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1037 <mml:mi mathvariant="italic">A</mml:mi>
1038 </mml:msub>
1039 <mml:mrow>
1040 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1041 <mml:mi mathvariant="italic">s</mml:mi>
1042 </mml:msub>
1043 <mml:mo>&it;</mml:mo>
1044 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1045 <mml:mi mathvariant="italic">A</mml:mi>
1046 </mml:msub>
1047 <mml:mo>+</mml:mo>
1048 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1049 <mml:mi mathvariant="italic">d</mml:mi>
1050 </mml:msub>
1051 <mml:mo>&it;</mml:mo>
1052 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1053 <mml:mi mathvariant="italic">A</mml:mi>
1054 </mml:msub>
1055 </mml:mrow>
1056 </mml:mfenced>
1057 </mml:mrow>
1058 </mml:mrow>
1059 </mml:math></inlineequation>
1060 </para>
1061 </para>
1062 <para>
1063 Despite the apparent precision of the above equations,
1064 blending arithmetic is not exactly specified,
1065 because blending operates with imprecise integer color values.
1066 However,
1067 a blend factor that should be equal to 1
1068 is guaranteed not to modify its multiplicand,
1069 and a blend factor equal to 0 reduces its multiplicand to 0.
1070 For example,
1071 when <parameter>sfactor</parameter> is <constant>GL_SRC_ALPHA</constant>,
1072 <parameter>dfactor</parameter> is <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
1073 and
1074 <inlineequation><mml:math>
1075 <!-- eqn: A sub s:-->
1076 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1077 <mml:mi mathvariant="italic">s</mml:mi>
1078 </mml:msub>
1079 </mml:math></inlineequation>
1080 is equal to
1081 <inlineequation><mml:math>
1082 <!-- eqn: k sub A:-->
1083 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1084 <mml:mi mathvariant="italic">A</mml:mi>
1085 </mml:msub>
1086 </mml:math></inlineequation>,
1087 the equations reduce to simple replacement:
1088 </para>
1089 <para>
1090 <para>
1091 <inlineequation><mml:math>
1092 <!-- eqn: R sub d = R sub s:-->
1093 <mml:mrow>
1094 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1095 <mml:mi mathvariant="italic">d</mml:mi>
1096 </mml:msub>
1097 <mml:mo>=</mml:mo>
1098 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1099 <mml:mi mathvariant="italic">s</mml:mi>
1100 </mml:msub>
1101 </mml:mrow>
1102 </mml:math></inlineequation>
1103 <inlineequation><mml:math>
1104 <!-- eqn: G sub d = G sub s:-->
1105 <mml:mrow>
1106 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1107 <mml:mi mathvariant="italic">d</mml:mi>
1108 </mml:msub>
1109 <mml:mo>=</mml:mo>
1110 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1111 <mml:mi mathvariant="italic">s</mml:mi>
1112 </mml:msub>
1113 </mml:mrow>
1114 </mml:math></inlineequation>
1115 <inlineequation><mml:math>
1116 <!-- eqn: B sub d = B sub s:-->
1117 <mml:mrow>
1118 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1119 <mml:mi mathvariant="italic">d</mml:mi>
1120 </mml:msub>
1121 <mml:mo>=</mml:mo>
1122 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1123 <mml:mi mathvariant="italic">s</mml:mi>
1124 </mml:msub>
1125 </mml:mrow>
1126 </mml:math></inlineequation>
1127 <inlineequation><mml:math>
1128 <!-- eqn: A sub d = A sub s:-->
1129 <mml:mrow>
1130 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1131 <mml:mi mathvariant="italic">d</mml:mi>
1132 </mml:msub>
1133 <mml:mo>=</mml:mo>
1134 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1135 <mml:mi mathvariant="italic">s</mml:mi>
1136 </mml:msub>
1137 </mml:mrow>
1138 </mml:math></inlineequation>
1139 </para>
1140 </para>
1141 <para>
1142 </para>
1143 </refsect1>
1144 <refsect1 id="examples"><title>Examples</title>
1145 <para>
1146 </para>
1147 <para>
1148 Transparency is best implemented using blend function
1149 (<constant>GL_SRC_ALPHA</constant>, <constant>GL_ONE_MINUS_SRC_ALPHA</constant>)
1150 with primitives sorted from farthest to nearest.
1151 Note that this transparency calculation does not require
1152 the presence of alpha bitplanes in the frame buffer.
1153 </para>
1154 <para>
1155 Blend function
1156 (<constant>GL_SRC_ALPHA</constant>, <constant>GL_ONE_MINUS_SRC_ALPHA</constant>)
1157 is also useful for rendering antialiased points and lines
1158 in arbitrary order.
1159 </para>
1160 <para>
1161 Polygon antialiasing is optimized using blend function
1162 (<constant>GL_SRC_ALPHA_SATURATE</constant>, <constant>GL_ONE</constant>)
1163 with polygons sorted from nearest to farthest.
1164 (See the <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glDisable</refentrytitle></citerefentry> reference page and the
1165 <constant>GL_POLYGON_SMOOTH</constant> argument for information on polygon antialiasing.)
1166 Destination alpha bitplanes,
1167 which must be present for this blend function to operate correctly,
1168 store the accumulated coverage.
1169 </para>
1170 </refsect1>
1171 <refsect1 id="notes"><title>Notes</title>
1172 <para>
1173 Incoming (source) alpha is correctly thought of as a material opacity,
1174 ranging from 1.0
1175 (<inlineequation><mml:math>
1176 <!-- eqn: K sub A:-->
1177 <mml:msub><mml:mi mathvariant="italic">K</mml:mi>
1178 <mml:mi mathvariant="italic">A</mml:mi>
1179 </mml:msub>
1180 </mml:math></inlineequation>),
1181 representing complete opacity,
1182 to 0.0 (0), representing complete
1183 transparency.
1184 </para>
1185 <para>
1186 When more than one color buffer is enabled for drawing,
1187 the GL performs blending separately for each enabled buffer,
1188 using the contents of that buffer for destination color.
1189 (See <citerefentry><refentrytitle>glDrawBuffer</refentrytitle></citerefentry>.)
1190 </para>
1191 <para>
1192 Blending affects only RGBA rendering.
1193 It is ignored by color index renderers.
1194 </para>
1195 <para>
1196 <constant>GL_CONSTANT_COLOR</constant>, <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>,
1197 <constant>GL_CONSTANT_ALPHA</constant>, <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant> are available only
1198 if the GL version is 1.4 or greater or if the <code>ARB_imaging</code> is
1199 supported by your implementation.
1200 </para>
1201 <para>
1202 <constant>GL_SRC_COLOR</constant> and <constant>GL_ONE_MINUS_SRC_COLOR</constant> are valid only for
1203 <parameter>sfactor</parameter> if the GL version is 1.4 or greater.
1204 </para>
1205 <para>
1206 <constant>GL_DST_COLOR</constant> and <constant>GL_ONE_MINUS_DST_COLOR</constant> are valid only for
1207 <parameter>dfactor</parameter> if the GL version is 1.4 or greater.
1208 </para>
1209 </refsect1>
1210 <refsect1 id="errors"><title>Errors</title>
1211 <para>
1212 <constant>GL_INVALID_ENUM</constant> is generated if either <parameter>sfactor</parameter> or <parameter>dfactor</parameter> is not an
1213 accepted value.
1214 </para>
1215 <para>
1216 <constant>GL_INVALID_OPERATION</constant> is generated if <function>glBlendFunc</function>
1217 is executed between the execution of <citerefentry><refentrytitle>glBegin</refentrytitle></citerefentry>
1218 and the corresponding execution of <citerefentry><refentrytitle>glEnd</refentrytitle></citerefentry>.
1219 </para>
1220 </refsect1>
1221 <refsect1 id="associatedgets"><title>Associated Gets</title>
1222 <para>
1223 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLEND_SRC</constant>
1224 </para>
1225 <para>
1226 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLEND_DST</constant>
1227 </para>
1228 <para>
1229 <citerefentry><refentrytitle>glIsEnabled</refentrytitle></citerefentry> with argument <constant>GL_BLEND</constant>
1230 </para>
1231 <para>
1232 </para>
1233 </refsect1>
1234 <refsect1 id="seealso"><title>See Also</title>
1235 <para>
1236 <citerefentry><refentrytitle>glAlphaFunc</refentrytitle></citerefentry>,
1237 <citerefentry><refentrytitle>glBlendColor</refentrytitle></citerefentry>,
1238 <citerefentry><refentrytitle>glBlendEquation</refentrytitle></citerefentry>,
1239 <citerefentry><refentrytitle>glBlendFuncSeparate</refentrytitle></citerefentry>,
1240 <citerefentry><refentrytitle>glClear</refentrytitle></citerefentry>,
1241 <citerefentry><refentrytitle>glDrawBuffer</refentrytitle></citerefentry>,
1242 <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry>,
1243 <citerefentry><refentrytitle>glLogicOp</refentrytitle></citerefentry>,
1244 <citerefentry><refentrytitle>glStencilFunc</refentrytitle></citerefentry>
1245
1246 </para>
1247 </refsect1>
1248 <refsect1 id="Copyright"><title>Copyright</title>
1249 <para>
1250 Copyright <trademark class="copyright"></trademark> 1991-2006
1251 Silicon Graphics, Inc. This document is licensed under the SGI
1252 Free Software B License. For details, see
1253 <ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
1254 </para>
1255 </refsect1>
1256 </refentry>