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