GA_blendFuncType

Declaration

typedef enum {
gaBlendNone,
gaBlendZero,
gaBlendOne,
gaBlendSrcColor,
gaBlendOneMinusSrcColor,
gaBlendSrcAlpha,
gaBlendOneMinusSrcAlpha,
gaBlendDstAlpha,
gaBlendOneMinusDstAlpha,
gaBlendDstColor,
gaBlendOneMinusDstColor,
gaBlendSrcAlphaSaturate,
gaBlendConstantColor,
gaBlendOneMinusConstantColor,
gaBlendConstantAlpha,
gaBlendOneMinusConstantAlpha,
gaBlendSrcAlphaFast,
gaBlendConstantAlphaFast
} GA_blendFuncType

Prototype In

snap/graphics.h

Description

Flags for 2D alpha blending functions supported by the SNAP Graphics drivers. The values in here define the the alpha blending functions passed to the srcBlendFunc and dstBlendFunc parameters ofo the SetBlendFunc function. Essentially the blend function defines how to combine the source and destination pixel color together to get the resulting destination color during rendering. The formula used for this is defined as:

DstColor = SrcColor * SrcFunc + DstColor * DstFunc;

If the source alpha blending function is set to gaBlendConstantAlpha, the SrcFunc above becomes:

SrcFunc = ConstAlpha

If the destination alpha blending function is set to gaBlendOneMinusDstAlpha then DstFunc above becomes:

DstFunc = (1-DstAlpha)

and the final equation becomes (note that each color channel is multiplied individually):

DstColor = SrcColor * ConstAlpha + DstColor * (1-DstAlpha)

Although the above is a completely contrived example, it does illustrate how the functions defined below combine to allow you to build complex and interesting blending functions. For simple source alpha transparency, the following formula would usually be used:

DstColor = SrcColor * SrcAlpha + DstColor * (1-SrcAlpha)

If you wish to use this type of blending and you do not care about the resulting alpha channel information, you can set the optimised gaBlendSrcAlphaFast blending mode. If you set both the source and destination blending modes to this value, the above formula will be used but an optimised fast path will be taken internally to make this run as fast as possible. For normal blending operations this will be much faster than setting the above formula manually. If however you need the destination alpha to be preserved, you will need to use the slower method instead.

For simple constant alpha transparency, the following formula would usually be used:

DstColor = SrcColor * ConstantAlpha + DstColor * (1-ConstantAlpha)

If you wish to use this type of blending and you do not care about the resulting alpha channel information, you can set the optimised gaBlendConstantAlphaFast blending mode. If you set both the source and destination blending modes to this value, the above formula will be used but an optimised fast path will be taken internally to make this run as fast as possible. For normal blending operations this will be much faster than setting the above formula manually. If however you need the destination alpha to be preserved, you will need to use the slower method instead.

Note: All the above equations assume the color values and alpha values are in the range of 0 through 1 in floating point. In reality all blending is done with integer color and alpha components in the range of 0 to 255, when a value of 255 corresponds to a value of 1.0 in the above equations.

Note: The constant color value set by a call to SetForeColor, and the constant alpha value set by a call to SetAlphaValue.

Note: Setting a blending function that uses the destination alpha components is only supported if the framebuffer currently supports destination alpha. Likewise setting a blending function that uses source alpha components is only supported if the framebuffer or incoming bitmap data contains an alpha channel. The results are undefined if these conditiions are not met.

Note: Enabling source or destination alpha blending overrides the setting of the current mix mode. Logical mix modes and blending cannot be used at the same time.

Members

gaBlendNone | No alpha blending
gaBlendZero | Blend factor is always zero
gaBlendOne | Blend factor is always one
gaBlendSrcColor | Blend factor is source color
gaBlendOneMinusSrcColor | Blend factor is 1-source color
gaBlendSrcAlpha | Blend factor is source alpha
gaBlendOneMinusSrcAlpha | Blend factor is 1-source alpha
gaBlendDstAlpha | Blend factor is destination alpha
gaBlendOneMinusDstAlpha | Blend factor is 1-destination alpha
gaBlendDstColor | Blend factor is destination color
gaBlendOneMinusDstColor | Blend factor is 1-destination color
gaBlendSrcAlphaSaturate | Blend factor is src alpha saturation
gaBlendConstantColor | Blend factor is a constant color
gaBlendOneMinusConstantColor | Blend factor is 1-constant color
gaBlendConstantAlpha | Blend factor is constant alpha
gaBlendOneMinusConstantAlpha | Blend factor is 1-constant alpha
gaBlendSrcAlphaFast | Common case of optimised src alpha
gaBlendConstantAlphaFast | Common case of optimised constant alpha

Copyright © 2002 SciTech Software, Inc. Visit our web site at http://www.scitechsoft.com