- specify pixel arithmetic



C SPECIFICATION


PARAMETERS

       _param1  Specifies  how  the  red,  green, blue, and alpha
                source blending factors are computed.   The  fol-
                lowing  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.

       _param2  Specifies  how  the  red,  green, blue, and alpha
                destination blending factors are computed.  Eight
                symbolic 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  destina-
       tion   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.  _param1 specifies which of nine methods is  used
       to  scale  the source color components.  _param2 specifies
       which of eight methods is used to  scale  the  destination
       color   components.    The  eleven  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, source and  des-
       tination color components are referred to as (Rs,Gs,Bs,As)
       and (Rd,Gd,Bd,Ad).  The color specified by glBlendColor is

    ------------------------------------------------------------------
    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 draw-
       ing in RGBA mode, the system uses the following equations:


                     Rd=min(kR,RssR+RddR)
                     Gd=min(kG,GssG+GddG)
                     Bd=min(kB,BssB+BddB)
                     Ad=min(kA,AssA+AddA)

       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 guar-
       anteed  not to modify its multiplicand, and a blend factor
       equal to 0 reduces its multiplicand to  0.   For  example,
       when     _param1     is     GL_SRC_ALPHA,    _param2    is
       GL_ONE_MINUS_SRC_ALPHA, and As is equal to kA,  the  equa-
       tions reduce to simple replacement:


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



EXAMPLES

       tion on polygon  antialiasing.)   Destination  alpha  bit-
       planes,  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 mate-
       rial opacity, ranging from 1.0 (KA), representing complete
       opacity, to 0.0 (0), representing complete transparency.

       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
       implementation.


ERRORS

       GL_INVALID_ENUM  is generated if either _param1 or _param2
       is not an accepted value.

       GL_INVALID_OPERATION is generated if glBlendFunc  is  exe-
       cuted between the execution of glBegin and the correspond-
       ing execution of glEnd.


ASSOCIATED GETS

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


SEE ALSO

       glAlphaFunc,   glBlendColor,   glBlendEquation,   glClear,
       glDrawBuffer, glEnable, glLogicOp, glStencilFunc



                                                                1