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 parameter of Enable, Disable, and IsEnabled: GLOBAL_ALPHA_SUN 0x81D9 Accepted by the by the 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.