blob: cc484dc94edc034d351765e75b86f3c06e9ecdec [file] [log] [blame]
Name
EXT_blend_func_separate
Name Strings
GL_EXT_blend_func_separate
Version
Date: 04/06/1999 Version 1.3
Number
173
Dependencies
None
Overview
Blending capability is extended by defining a function that allows
independent setting of the RGB and alpha blend factors for blend
operations that require source and destination blend factors. It
is not always desired that the blending used for RGB is also applied
to alpha.
New Procedures and Functions
void BlendFuncSeparateEXT(enum sfactorRGB,
enum dfactorRGB,
enum sfactorAlpha,
enum dfactorAlpha);
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
BLEND_DST_RGB_EXT 0x80C8
BLEND_SRC_RGB_EXT 0x80C9
BLEND_DST_ALPHA_EXT 0x80CA
BLEND_SRC_ALPHA_EXT 0x80CB
Additions to Chapter 2 of the 1.2 GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.2 GL Specification (Rasterization)
None
Additions to Chapter 4 of the 1.2 GL Specification (Per-Fragment Operations
and the Framebuffer)
The RGB and alpha blend factors are separate. The function
BlendFuncSeparateEXT allows the specification of the four factors.
Table 4.1 and Table 4.2 are modified as follows:
Value RGB Factors Alpha 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-Rd/Kr, 1-Gd/Kg, 1-Bd/Kb) 1-Ad/Ka
SRC_ALPHA (As/Ka, As/Ka, As/Ka) As/Ka
ONE_MINUS_SRC_ALPHA (1-As/Ka, 1-As/Ka, 1-As/Ka) 1-As/Ka
DST_ALPHA (Ad/Ka, Ad/Ka, Ad/Ka) Ad/Ka
ONE_MINUS_DST_ALPHA (1-Ad/Ka, 1-Ad/Ka, 1-Ad/Ka) 1-Ad/Ka
CONSTANT_COLOR (Rc, Gc, Bc) Ac
ONE_MINUS_CONSTANT_COLOR (1-Rc, 1-Gc, 1-Bc) 1-Ac
CONSTANT_ALPHA (Ac, Ac, Ac) Ac
ONE_MINUS_CONSTANT_ALPHA (1-Ac, 1-Ac, 1-Ac) 1-Ac
SRC_ALPHA_SATURATE (f, f, f) 1
Value RGB Factors Alpha 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-Rs/Kr, 1-Gs/Kg, 1-Bs/Kb) 1-As/Ka
SRC_ALPHA (As/Ka, As/Ka, As/Ka) As/Ka
ONE_MINUS_SRC_ALPHA (1-As/Ka, 1-As/Ka, 1-As/Ka) 1-As/Ka
DST_ALPHA (Ad/Ka, Ad/Ka, Ad/Ka) Ad/Ka
ONE_MINUS_DST_ALPHA (1-Ad/Ka, 1-Ad/Ka, 1-Ad/Ka) 1-Ad/Ka
CONSTANT_COLOR (Rc, Gc, Bc) Ac
ONE_MINUS_CONSTANT_COLOR (1-Rc, 1-Gc, 1-Bc) 1-Ac
CONSTANT_ALPHA (Ac, Ac, Ac) Ac
ONE_MINUS_CONSTANT_ALPHA (1-Ac, 1-Ac, 1-Ac) 1-Ac
SRC_ALPHA_SATURATE (f, f, f) 1
The commands that control blending are
void BlendFunc(enum src, enum dst)
void BlendFuncSeparateEXT(enum sfactorRGB, enum dfactorRGB,
enum sfactorAlpha, enum dfactorAlpha);
The BlendFunc command sets both source factors (RGB and alpha) and
destination factors (RGB and alpha) while BlendFuncSeparateEXT sets
the RGB factors independently from the alpha factors.
Additions to Chapter 5 of the 1.2 GL Specification (Special Functions)
None
Additions to Chapter 6 of the 1.2 GL Specification (State and State Requests)
The state required is four integers indicating the source and
destination blending functions for RGB and alpha. The initial state
for both source functions is ONE. The initial state for both
destination functions is ZERO.
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:
BlendFuncSeparateEXT
2 20 rendering command length
2 4134 rendering command opcode
4 ENUM sfactorRGB
4 ENUM dfactorRGB
4 ENUM sfactorAlpha
4 ENUM dfactorAlpha
Errors
GL_INVALID_ENUM is generated if either sfactorRGB, dfactorRGB,
sfactorAlpha, or dfactorAlpha is not an accepted value.
GL_INVALID_OPERATION is generated if glBlendFunc is executed between
the execution of glBegin and the corresponding execution of glEnd.
New State
The get values BLEND_SRC and BLEND_DST return the RGB source and
destination factor, respectively.
Initial
Get Value Get Command Type Value Attribute
--------- ----------- ---- ------- ------------
BLEND_SRC_RGB_EXT GetFloatv Z ONE color-buffer
BLEND_DST_RGB_EXT GetFloatv Z ZERO color-buffer
BLEND_SRC_ALPHA_EXT GetFloatv Z ONE color-buffer
BLEND_DST_ALPHA_EXT GetFloatv Z ZERO color-buffer
New Implementation Dependent State
None