'\" t .\" Title: glBlendFunc .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 01/03/2018 .\" Manual: [FIXME: manual] .\" Source: [FIXME: source] .\" Language: English .\" .TH "GLBLENDFUNC" "3G" "01/03/2018" "[FIXME: source]" "[FIXME: manual]" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" glBlendFunc \- specify pixel arithmetic .SH "C SPECIFICATION" .HP \w'void\ glBlendFunc('u .BI "void glBlendFunc(GLenum\ " "sfactor" ", GLenum\ " "dfactor" ");" .HP \w'void\ glBlendFunci('u .BI "void glBlendFunci(GLuint\ " "buf" ", GLenum\ " "sfactor" ", GLenum\ " "dfactor" ");" .SH "PARAMETERS" .PP \fIbuf\fR .RS 4 For \fBglBlendFunci\fR, specifies the index of the draw buffer for which to set the blend function\&. .RE .PP \fIsfactor\fR .RS 4 Specifies how the red, green, blue, and alpha source blending factors are computed\&. The initial value is \fBGL_ONE\fR\&. .RE .PP \fIdfactor\fR .RS 4 Specifies how the red, green, blue, and alpha destination blending factors are computed\&. The following symbolic constants are accepted: \fBGL_ZERO\fR, \fBGL_ONE\fR, \fBGL_SRC_COLOR\fR, \fBGL_ONE_MINUS_SRC_COLOR\fR, \fBGL_DST_COLOR\fR, \fBGL_ONE_MINUS_DST_COLOR\fR, \fBGL_SRC_ALPHA\fR, \fBGL_ONE_MINUS_SRC_ALPHA\fR, \fBGL_DST_ALPHA\fR, \fBGL_ONE_MINUS_DST_ALPHA\fR\&. \fBGL_CONSTANT_COLOR\fR, \fBGL_ONE_MINUS_CONSTANT_COLOR\fR, \fBGL_CONSTANT_ALPHA\fR, and \fBGL_ONE_MINUS_CONSTANT_ALPHA\fR\&. The initial value is \fBGL_ZERO\fR\&. .RE .SH "DESCRIPTION" .PP Pixels can be drawn using a function that blends the incoming (source) RGBA values with the RGBA values that are already in the frame buffer (the destination values)\&. Blending is initially disabled\&. Use \fBglEnable\fR() and \fBglDisable\fR with argument \fBGL_BLEND\fR to enable and disable blending\&. .PP \fBglBlendFunc\fR defines the operation of blending for all draw buffers when it is enabled\&. \fBglBlendFunci\fR defines the operation of blending for a single draw buffer specified by \fIbuf\fR when enabled for that draw buffer\&. \fIsfactor\fR specifies which method is used to scale the source color components\&. \fIdfactor\fR specifies which method is used to scale the destination color components\&. Both parameters must be one of the following symbolic constants: \fBGL_ZERO\fR, \fBGL_ONE\fR, \fBGL_SRC_COLOR\fR, \fBGL_ONE_MINUS_SRC_COLOR\fR, \fBGL_DST_COLOR\fR, \fBGL_ONE_MINUS_DST_COLOR\fR, \fBGL_SRC_ALPHA\fR, \fBGL_ONE_MINUS_SRC_ALPHA\fR, \fBGL_DST_ALPHA\fR, \fBGL_ONE_MINUS_DST_ALPHA\fR, \fBGL_CONSTANT_COLOR\fR, \fBGL_ONE_MINUS_CONSTANT_COLOR\fR, \fBGL_CONSTANT_ALPHA\fR, \fBGL_ONE_MINUS_CONSTANT_ALPHA\fR, \fBGL_SRC_ALPHA_SATURATE\fR, \fBGL_SRC1_COLOR\fR, \fBGL_ONE_MINUS_SRC1_COLOR\fR, \fBGL_SRC1_ALPHA\fR, and \fBGL_ONE_MINUS_SRC1_ALPHA\fR\&. The possible methods are described in the following table\&. Each method defines four scale factors, one each for red, green, blue, and alpha\&. In the table and in subsequent equations, first source, second source and destination color components are referred to as R s0 G s0 B s0 A s0, R s1 G s1 B s1 A s1 and R d G d B d A d, respectively\&. The color specified by \fBglBlendColor\fR() is referred to as R c G c B c A c\&. They are understood to have integer values between 0 and k R k G k B k A, where .PP k c = 2 m c \- 1 .PP and m R m G m B m A is the number of red, green, blue, and alpha bitplanes\&. .PP Source and destination scale factors are referred to as s R s G s B s A and d R d G d B d A\&. The scale factors described in the table, denoted f R f G f B f A, represent either source or destination factors\&. All scale factors have range 0 1\&. .PP .TS allbox tab(:); lB lB. T{ \fB Parameter \fR T}:T{ f R f G f B f A T} .T& l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l. T{ \fBGL_ZERO\fR T}:T{ 0 0 0 0 T} T{ \fBGL_ONE\fR T}:T{ 1 1 1 1 T} T{ \fBGL_SRC_COLOR\fR T}:T{ R s0 k R G s0 k G B s0 k B A s0 k A T} T{ \fBGL_ONE_MINUS_SRC_COLOR\fR T}:T{ 1 1 1 1 \- R s0 k R G s0 k G B s0 k B A s0 k A T} T{ \fBGL_DST_COLOR\fR T}:T{ R d k R G d k G B d k B A d k A T} T{ \fBGL_ONE_MINUS_DST_COLOR\fR T}:T{ 1 1 1 1 \- R d k R G d k G B d k B A d k A T} T{ \fBGL_SRC_ALPHA\fR T}:T{ A s0 k A A s0 k A A s0 k A A s0 k A T} T{ \fBGL_ONE_MINUS_SRC_ALPHA\fR T}:T{ 1 1 1 1 \- A s0 k A A s0 k A A s0 k A A s0 k A T} T{ \fBGL_DST_ALPHA\fR T}:T{ A d k A A d k A A d k A A d k A T} T{ \fBGL_ONE_MINUS_DST_ALPHA\fR T}:T{ 1 1 1 1 \- A d k A A d k A A d k A A d k A T} T{ \fBGL_CONSTANT_COLOR\fR T}:T{ R c G c B c A c T} T{ \fBGL_ONE_MINUS_CONSTANT_COLOR\fR T}:T{ 1 1 1 1 \- R c G c B c A c T} T{ \fBGL_CONSTANT_ALPHA\fR T}:T{ A c A c A c A c T} T{ \fBGL_ONE_MINUS_CONSTANT_ALPHA\fR T}:T{ 1 1 1 1 \- A c A c A c A c T} T{ \fBGL_SRC_ALPHA_SATURATE\fR T}:T{ i i i 1 T} T{ \fBGL_SRC1_COLOR\fR T}:T{ R s1 k R G s1 k G B s1 k B A s1 k A T} T{ \fBGL_ONE_MINUS_SRC1_COLOR\fR T}:T{ 1 1 1 1 \- R s1 k R G s1 k G B s1 k B A s1 k A T} T{ \fBGL_SRC1_ALPHA\fR T}:T{ A s1 k A A s1 k A A s1 k A A s1 k A T} T{ \fBGL_ONE_MINUS_SRC1_ALPHA\fR T}:T{ 1 1 1 1 \- A s1 k A A s1 k A A s1 k A A s1 k A T} .TE .sp 1 .PP In the table, .PP i = min ⁡ A s k A \- A d k A .PP To determine the blended RGBA values of a pixel, the system uses the following equations: .PP R d = min ⁡ k R R s ⁢ s R + R d ⁢ d R G d = min ⁡ k G G s ⁢ s G + G d ⁢ d G B d = min ⁡ k B B s ⁢ s B + B d ⁢ d B A d = min ⁡ k A A s ⁢ s A + A d ⁢ d A .PP Despite the apparent precision of the above equations, blending arithmetic is not exactly specified, because blending operates with imprecise integer color values\&. However, a blend factor that should be equal to 1 is guaranteed not to modify its multiplicand, and a blend factor equal to 0 reduces its multiplicand to 0\&. For example, when \fIsfactor\fR is \fBGL_SRC_ALPHA\fR, \fIdfactor\fR is \fBGL_ONE_MINUS_SRC_ALPHA\fR, and A s is equal to k A, the equations reduce to simple replacement: .PP R d = R s G d = G s B d = B s A d = A s .PP .SH "EXAMPLES" .PP .PP Transparency is best implemented using blend function (\fBGL_SRC_ALPHA\fR, \fBGL_ONE_MINUS_SRC_ALPHA\fR) with primitives sorted from farthest to nearest\&. Note that this transparency calculation does not require the presence of alpha bitplanes in the frame buffer\&. .PP Blend function (\fBGL_SRC_ALPHA\fR, \fBGL_ONE_MINUS_SRC_ALPHA\fR) is also useful for rendering antialiased points and lines in arbitrary order\&. .PP Polygon antialiasing is optimized using blend function (\fBGL_SRC_ALPHA_SATURATE\fR, \fBGL_ONE\fR) with polygons sorted from nearest to farthest\&. (See the \fBglEnable\fR(), \fBglDisable\fR reference page and the \fBGL_POLYGON_SMOOTH\fR argument for information on polygon antialiasing\&.) Destination alpha bitplanes, which must be present for this blend function to operate correctly, store the accumulated coverage\&. .SH "NOTES" .PP Incoming (source) alpha is correctly thought of as a material opacity, ranging from 1\&.0 (K A), representing complete opacity, to 0\&.0 (0), representing complete transparency\&. .PP When more than one color buffer is enabled for drawing, the GL performs blending separately for each enabled buffer, using the contents of that buffer for destination color\&. (See \fBglDrawBuffer\fR()\&.) .PP When dual source blending is enabled (i\&.e\&., one of the blend factors requiring the second color input is used), the maximum number of enabled draw buffers is given by \fBGL_MAX_DUAL_SOURCE_DRAW_BUFFERS\fR, which may be lower than \fBGL_MAX_DRAW_BUFFERS\fR\&. .SH "ERRORS" .PP \fBGL_INVALID_ENUM\fR is generated if either \fIsfactor\fR or \fIdfactor\fR is not an accepted value\&. .PP \fBGL_INVALID_VALUE\fR is generated by \fBglBlendFunci\fR if \fIbuf\fR is greater than or equal to the value of \fBGL_MAX_DRAW_BUFFERS\fR\&. .SH "ASSOCIATED GETS" .PP \fBglGet\fR() with argument \fBGL_BLEND_SRC_RGB\fR .PP \fBglGet\fR() with argument \fBGL_BLEND_SRC_ALPHA\fR .PP \fBglGet\fR() with argument \fBGL_BLEND_DST_RGB\fR .PP \fBglGet\fR() with argument \fBGL_BLEND_DST_ALPHA\fR .PP \fBglIsEnabled\fR() with argument \fBGL_BLEND\fR .PP .SH "VERSION SUPPORT" .TS allbox tab(:); lB cB s s s s s s s s s s s lB cB cB cB cB cB cB cB cB cB cB cB cB. T{ T}:T{ \fBOpenGL Version\fR T} T{ \fBFunction / Feature Name\fR T}:T{ \fB2\&.0\fR T}:T{ \fB2\&.1\fR T}:T{ \fB3\&.0\fR T}:T{ \fB3\&.1\fR T}:T{ \fB3\&.2\fR T}:T{ \fB3\&.3\fR T}:T{ \fB4\&.0\fR T}:T{ \fB4\&.1\fR T}:T{ \fB4\&.2\fR T}:T{ \fB4\&.3\fR T}:T{ \fB4\&.4\fR T}:T{ \fB4\&.5\fR T} .T& l c c c c c c c c c c c c l c c c c c c c c c c c c. T{ \fBglBlendFunc\fR T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T} T{ \fBglBlendFunci\fR T}:T{ \- T}:T{ \- T}:T{ \- T}:T{ \- T}:T{ \- T}:T{ \- T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T} .TE .sp 1 .SH "SEE ALSO" .PP \fBglBlendColor\fR(), \fBglBlendEquation\fR(), \fBglBlendFuncSeparate\fR(), \fBglClear\fR(), \fBglDrawBuffer\fR(), \fBglEnable\fR(), \fBglLogicOp\fR(), \fBglStencilFunc\fR() .SH "COPYRIGHT" .PP Copyright \(co 1991\-2006 Silicon Graphics, Inc\&. Copyright \(co 2010\-2014 Khronos Group\&. This document is licensed under the SGI Free Software B License\&. For details, see \m[blue]\fBhttp://oss\&.sgi\&.com/projects/FreeB/\fR\m[]\&. .SH "COPYRIGHT" .br Copyright \(co 1991-2006 Silicon Graphics, Inc. .br Copyright \(co 2010-2014 Khronos Group .br