MirBSD manpage: glBlendFunc(3)


GLBLENDFUNC(3G)     UNIX Programmer's Manual      GLBLENDFUNC(3G)

NAME

     glBlendFunc - specify pixel arithmetic

C SPECIFICATION

     void glBlendFunc( GLenum sfactor,
                       GLenum dfactor )

PARAMETERS

     sfactor  Specifies how the red, green, blue, and alpha
              source blending factors are computed. The following
              symbolic constants are accepted: GL_ZERO, GL_ONE,
              GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA,
              GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA,
              GL_ONE_MINUS_DST_ALPHA, and GL_SRC_ALPHA_SATURATE.
              The initial value is GL_ONE.

              Additionally, if the GL_ARB_imaging extension is
              supported, the following constants are accepted:
              GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
              GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA.

     dfactor  Specifies how the red, green, blue, and alpha des-
              tination blending factors are computed. Eight sym-
              bolic constants are accepted: GL_ZERO, GL_ONE,
              GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
              GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, and
              GL_ONE_MINUS_DST_ALPHA. The initial value is
              GL_ZERO.

              Additionally, if the GL_ARB_imaging extension is
              supported, the following constants are accepted:
              GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
              GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA.

DESCRIPTION

     In RGBA mode, 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 glEnable and
     glDisable with argument GL_BLEND to enable and disable
     blending.

     glBlendFunc defines the operation of blending when it is
     enabled. sfactor specifies which of nine methods is used to
     scale the source color components. dfactor specifies which
     of eight methods is used to scale the destination color com-
     ponents. The eleven possible methods are described in the
     following table. Each method defines four scale factors, one
     each for red, green, blue, and alpha.

MirBSD #10-current     Printed 2021-12-07                       1

GLBLENDFUNC(3G)     UNIX Programmer's Manual      GLBLENDFUNC(3G)

     In the table and in subsequent equations, source and desti-
     nation color components are referred to as (Rs,Gs,Bs,As) and
     (Rd,Gd,Bd,Ad). The color specified by glBlendColor is
     referred to as (Rc,Gc,Bc,Ac). They are understood to have
     integer values between 0 and (kR,kG,kB,kA), where
                                      mc
                                kc = 2  -1

     and (mR,mG,mB,mA) is the number of red, green, blue, and
     alpha bitplanes.

     Source and destination scale factors are referred to as
     (sR,sG,sB,sA) and (dR,dG,dB,dA). The scale factors described
     in the table, denoted (fR,fG,fB,fA), represent either source
     or destination factors. All scale factors have range [0, 1].

                      _________________________
                      Parameter             (fR,  fG,  fB,  fA)
                      _________________________
                      GL_ZERO               (0, 0, 0, 0)
                      GL_ONE                (1, 1, 1, 1)
                      GL_SRC_COLOR          (Rs/kR, Gs/kG, Bs/kB, As/kA)
                      GL_ONE_MINUS_SRC_COLOR(1, 1, 1, 1) - (Rs/kR, Gs/kG, Bs/kB, As/kA)
                      GL_DST_COLOR          (Rd/kR, Gd/kG, Bd/kB, Ad/kA)
                      GL_ONE_MINUS_DST_COLOR(1, 1, 1, 1) - (Rd/kR, Gd/kG, Bd/kB, Ad/kA)
                      GL_SRC_ALPHA          (As/kA, As/kA, As/kA, As/kA)
                      GL_ONE_MINUS_SRC_ALPHA(1, 1, 1, 1) - (As/kA, As/kA, As/kA, As/kA)
                      GL_DST_ALPHA          (Ad/kA, Ad/kA, Ad/kA, Ad/kA)
                      GL_ONE_MINUS_DST_ALPHA(1, 1, 1, 1) - (Ad/kA, Ad/kA, Ad/kA, Ad/kA)
                      GL_SRC_ALPHA_SATURATE (i, i, i, 1)
                      GL_CONSTANT_COLOR     (Rc,Gc,Bc,Ac)
                      GL_ONE_MINUS_CONSTANT_COLOR(1, 1, 1, 1) - (Rc,Gc,Bc,Ac)
                      GL_CONSTANT_ALPHA     (Ac,Ac,Ac,Ac)
                      GL_ONE_MINUS_CONSTANT_ALPHA(1, 1, 1, 1) - (Ac,Ac,Ac,Ac)
                      _________________________

     In the table,

               i = min(As, kA - Ad) / kA

     To determine the blended RGBA values of a pixel when drawing
     in RGBA mode, the system uses the following equations:

               Rd = min(kR, Rs sR + Rd dR)
               Gd = min(kG, Gs sG + Gd dG)
               Bd = min(kB, Bs sB + Bd dB)
               Ad = min(kA, As sA + Ad dA)

     Despite the apparent precision of the above equations,
     blending arithmetic is not exactly specified, because blend-
     ing operates with imprecise integer color values. However, a
     blend factor that should be equal to 1 is guaranteed not to

MirBSD #10-current     Printed 2021-12-07                       2

GLBLENDFUNC(3G)     UNIX Programmer's Manual      GLBLENDFUNC(3G)

     modify its multiplicand, and a blend factor equal to 0
     reduces its multiplicand to 0. For example, when sfactor is
     GL_SRC_ALPHA, dfactor is GL_ONE_MINUS_SRC_ALPHA, and As is
     equal to kA, the equations reduce to simple replacement:

               Rd = Rs
               Gd = Gs
               Bd = Bs
               Ad = As

EXAMPLES

     Transparency is best implemented using blend function (-
     GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) with primitives sorted
     from farthest to nearest. Note that this transparency calcu-
     lation does not require the presence of alpha bitplanes in
     the frame buffer.

     Blend function (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) is
     also useful for rendering antialiased points and lines in
     arbitrary order.

     Polygon antialiasing is optimized using blend function
     (GL_SRC_ALPHA_SATURATE, GL_ONE) with polygons sorted from
     nearest to farthest. (See the glEnable, glDisable reference
     page and the GL_POLYGON_SMOOTH argument for information on
     polygon antialiasing.) Destination alpha bitplanes, which
     must be present for this blend function to operate
     correctly, store the accumulated coverage.

NOTES

     Incoming (source) alpha is correctly thought of as a
     material opacity, ranging from 1.0 (KA), representing com-
     plete opacity, to 0.0 (0), representing complete tran-
     sparency.

     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 glDrawBuffer.)

     Blending affects only RGBA rendering. It is ignored by color
     index renderers.

     GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR,
     GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA are only
     available if the GL_ARB_imaging is supported by your imple-
     mentation.

ERRORS

     GL_INVALID_ENUM is generated if either sfactor or dfactor is
     not an accepted value.

MirBSD #10-current     Printed 2021-12-07                       3

GLBLENDFUNC(3G)     UNIX Programmer's Manual      GLBLENDFUNC(3G)

     GL_INVALID_OPERATION is generated if glBlendFunc is executed
     between the execution of glBegin and the corresponding exe-
     cution of glEnd.

ASSOCIATED GETS

     glGet with argument GL_BLEND_SRC
     glGet with argument GL_BLEND_DST
     glIsEnabled with argument GL_BLEND

SEE ALSO

     glAlphaFunc(3G), glBlendColor(3G), glBlendEquation(3G),
     glClear(3G), glDrawBuffer(3G), glEnable(3G), glLogicOp(3G),
     glStencilFunc(3G)

MirBSD #10-current     Printed 2021-12-07                       4

Generated on 2021-12-07 11:07:08 by $MirOS: src/scripts/roff2htm,v 1.103 2021/01/23 20:24:35 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2021 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.