blob: 77ab1dd2f6d8ec60c1ad152533c5e032a6fd2ddb [file] [log] [blame]
Name
SUN_global_alpha
Name Strings
GL_SUN_global_alpha
Contact
Jack Middleton, Sun (Jack.Middleton 'at' eng.sun.com)
Status
Shipping
Version
$Date: 1999/12/28 01:40:37 $ $Revision: 1.4 $
SUN Date: 99/06/25 13:05:48 Revision: 1.7
Number
164
Dependencies
OpenGL 1.2 is required
Overview
Transparency is done in OpenGL using alpha blending. An alpha value
of 0.0 is used for fully transparent objects, while an alpha value
of 1.0 is used for fully opaque objects. A value of 0.25 is 75%
transparent, and so on.
OpenGL defines alpha as a component of the vertex color state.
Whenever a color is set, the alpha component is set along with the
red, green, and blue components. This means that transparency
can't be changed for primitives with per-vertex colors without
modifying the color of each vertex, replacing the old alpha
component with the new alpha component. This can be very expensive
for objects that are drawn using vertex arrays; it all but
precludes the use of display lists.
This extension defines a new global alpha attribute that can be
used to specify an alpha factor that is independent from the alpha
component of the color value. The global alpha factor is
multiplied by the fragment's alpha value after primitive
rasterization and prior to texture mapping, replacing the
fragment's alpha value. The global alpha extension is only
specified in RGBA mode and must be applied prior to any texture
mapping operation. It is enabled by a new GLOBAL_ALPHA flag.
New Procedures and Functions
void GlobalAlphaFactorbSUN(byte factor);
void GlobalAlphaFactorsSUN(short factor);
void GlobalAlphaFactoriSUN(int factor);
void GlobalAlphaFactorfSUN(float factor);
void GlobalAlphaFactordSUN(double factor);
void GlobalAlphaFactorubSUN(ubyte factor);
void GlobalAlphaFactorusSUN(ushort factor);
void GlobalAlphaFactoruiSUN(uint factor);
New Tokens
Accepted by the <cap> parameter of Enable, Disable, and IsEnabled:
GLOBAL_ALPHA_SUN 0x81D9
Accepted by the by the <pname> parameter of GetBooleanv,
GetIntegerv, GetFloatv, and GetDoublev:
GLOBAL_ALPHA_FACTOR_SUN 0x81DA
Additions to Chapter 2 of the GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the GL Specification (Rasterization)
Global alpha processing is a new stage in the rasterization
pipeline that occurs after primitive rasterization (including
pixel rectangles and bitmaps) and before any texture mapping
operations. Global alpha processing is only done in RGBA mode.
It has no effect in color index mode.
Global alpha processing is enabled or disabled with the Enable and
Disable commands using the symbolic constant GLOBAL_ALPHA_SUN.
The global alpha factor is set using one of the GlobalAlphaFactor*SUN
commands listed above.
If global alpha processing is enabled, then the global alpha factor
is multiplied by the incoming fragment's alpha value. This
product replaces the fragment's alpha value and is passed to
subsequent stages in the pipeline.
Note that for geometric primitives, a functionally equivalent
method to that of performing a multiplication for each
fragment is to multiply the alpha values at each vertex of the
primitive by the global alpha factor prior to the primitive
rasterization step.
Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
and the Framebuffer)
None
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 / WGL / AGL Specifications
None
GLX Protocol
Eight rendering commands are sent to the server as part of
the glXRender request:
GlobalAlphaFactorbSUN
2 8 rendering command length
2 16391 rendering command opcode
1 INT8 code
1 INT8 pad
2 INT16 pad
GlobalAlphaFactorsSUN
2 8 rendering command length
2 16392 rendering command opcode
2 INT16 code
2 INT16 pad
GlobalAlphaFactoriSUN
2 8 rendering command length
2 16393 rendering command opcode
4 INT32 code
GlobalAlphaFactorfSUN
2 8 rendering command length
2 16394 rendering command opcode
4 FLOAT32 code
GlobalAlphaFactordSUN
2 12 rendering command length
2 16395 rendering command opcode
8 FLOAT64 code
GlobalAlphaFactorubSUN
2 8 rendering command length
2 16396 rendering command opcode
1 CARD8 code
1 CARD8 pad
2 CARD16 pad
GlobalAlphaFactorusSUN
2 8 rendering command length
2 16397 rendering command opcode
2 CARD16 code
2 CARD16 pad
GlobalAlphaFactoruiSUN
2 8 rendering command length
2 16398 rendering command opcode
4 CARD32 code
Errors
None
New State
Get Value Get Command Type Initial Value
--------- ----------- ---- -------------
GLOBAL_ALPHA_FACTOR_SUN GetIntegerv, C 1
GetFloatv
GLOBAL_ALPHA_SUN IsEnabled B False
Get Value Attribute
--------- ---------
GLOBAL_ALPHA_FACTOR_SUN color-buffer
GLOBAL_ALPHA_SUN color-buffer/enable
Revision History
6/25/99 Added fields from the new extension template.