Name EXT_blend_color Name Strings GL_EXT_blend_color Version $Date: 1995/03/31 04:40:19 $ $Revision: 1.7 $ Number 2 Dependencies None Overview Blending capability is extended by defining a constant color that can be included in blending equations. A typical usage is blending two RGB images. Without the constant blend factor, one image must have an alpha channel with each pixel set to the desired blend factor. New Procedures and Functions void BlendColorEXT(clampf red, clampf green, clampf blue, clampf alpha); New Tokens Accepted by the and parameters of BlendFunc: CONSTANT_COLOR_EXT 0x8001 ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 CONSTANT_ALPHA_EXT 0x8003 ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 Accepted by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: BLEND_COLOR_EXT 0x8005 Additions to Chapter 2 of the GL Specification (OpenGL Operation) None Additions to Chapter 3 of the GL Specification (Rasterization) None Additions to Chapter 4 of the GL Specification (Per-Fragment Operations and the Framebuffer) The commands that control blending are now BlendFunc and BlendColorEXT. A constant color to be used in the blending equation is specified by BlendColorEXT. The four parameters are clamped to the range [0,1] before being stored. The default value for the constant blending color is (0,0,0,0). The constant color can be used in both the source and destination blending factors. Four lines are added to table 4.1 and table 4.2: Value Blend Factors ----- ------------- ZERO (0, 0, 0, 0) ONE (1, 1, 1, 1) DST_COLOR (Rd/Kr, Gd/Kg, Bd/Kb, Ad/Ka) ONE_MINUS_DST_COLOR (1, 1, 1, 1) - (Rd/Kr,Gd/Kg,Bd/Kb,Ad/Ka) SRC_ALPHA (As, As, As, As) / Ka ONE_MINUS_SRC_ALPHA (1, 1, 1, 1) - (As, As, As, As) / Ka DST_ALPHA (Ad, Ad, Ad, Ad) / Ka ONE_MINUS_DST_ALPHA (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) / Ka CONSTANT_COLOR_EXT (Rc, Gc, Bc, Ac) NEW ONE_MINUS_CONSTANT_COLOR_EXT (1, 1, 1, 1) - (Rc, Gc, Bc, Ac) NEW CONSTANT_ALPHA_EXT (Ac, Ac, Ac, Ac) NEW ONE_MINUS_CONSTANT_ALPHA_EXT (1, 1, 1, 1) - (Ac, Ac, Ac, Ac) NEW SRC_ALPHA_SATURATE (f, f, f, 1) Table 4.1: Values controlling the source blending function and the source blending values they compute. Ka = 2**m - 1, where m is the number of bits in the A color component. Kr, Kg, and Kb are similarly determined by the number of bits in the R, G, and B color components. f = min(As, 1-Ad) / Ka. Value Blend Factors ----- ------------- ZERO (0, 0, 0, 0) ONE (1, 1, 1, 1) SRC_COLOR (Rs/Kr, Gs/Kg, Bs/Kb, As/Ka) ONE_MINUS_SRC_COLOR (1, 1, 1, 1) - (Rs/Kr,Gs/Kg,Bs/Kb,As/Ka) SRC_ALPHA (As, As, As, As) / Ka ONE_MINUS_SRC_ALPHA (1, 1, 1, 1) - (As, As, As, As) / Ka DST_ALPHA (Ad, Ad, Ad, Ad) / Ka ONE_MINUS_DST_ALPHA (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) / Ka CONSTANT_COLOR_EXT (Rc, Gc, Bc, Ac) NEW ONE_MINUS_CONSTANT_COLOR_EXT (1, 1, 1, 1) - (Rc, Gc, Bc, Ac) NEW CONSTANT_ALPHA_EXT (Ac, Ac, Ac, Ac) NEW ONE_MINUS_CONSTANT_ALPHA_EXT (1, 1, 1, 1) - (Ac, Ac, Ac, Ac) NEW Table 4.2: Values controlling the destination blending function and the destination blending values they compute. Ka = 2**m - 1, where m is the number of bits in the A color component. Kr, Kg, and Kb are similarly determined by the number of bits in the R, G, and B color components. Rc, Gc, Bc, and Ac are the four components of the constant blending color. These blend factors are not scaled by Kr, Kg, Kb, and Ka, because they are already in the range [0,1]. Additions to Chapter 5 of the GL Specification (Special Functions) None Additions to Chapter 6 of the GL Specification (State and State Requests) None Additions to the GLX Specification None GLX Protocol A new GL rendering command is added. The following command is sent to the server as part of a glXRender request: BlendColorEXT 2 20 rendering command length 2 4096 rendering command opcode 4 FLOAT32 red 4 FLOAT32 green 4 FLOAT32 blue 4 FLOAT32 alpha Errors INVALID_OPERATION is generated if BlendColorEXT is called between execution of Begin and the corresponding call to End. New State Initial Get Value Get Command Type Value Attrib --------- ----------- ---- ------- ------ BLEND_COLOR_EXT GetFloatv C (0,0,0,0) color-buffer New Implementation Dependent State None