XXX - Not complete yet!!!
Name

    SGIX_blend_cadd

Name Strings

    GL_SGIX_blend_cadd

Version

    $Date: 1998/04/10 21:45:37 $ $Revision: 1.2 $

Number

    150

Dependencies

    EXT_blend_minmax affects the definition of this extension
    SGIX_COMPLEX or SGIX_REAL pixel formats is required
    SGIX_FBConfig is required
    SGIX_cbuffer is required

Overview

    An additional blending equation is specified using the interface defined
    by EXT_blend_minmax.  This equation generates the addition of two complex
    input sources.  Adding two complex images is useful for image
    and signal processing applications.

    
New Procedures and Functions

    None

New Tokens

    Accepted by the <mode> parameter of BlendEquationEXT:

	FUNC_COMPLEX_ADD_EXT        0x601C

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)

    An additional blending equation is defined.  If BlendEquationEXT is
    called with <mode> set to FUNC_COMPLEX_ADD_EXT, the blending equation
    becomes

	C_real' = Cs_real + Cd_real
	C_imaginary' = Cs_imaginary + Cd_imaginary


    where Cs_real and Cs_imaginary are the source real and imaginary
    components and Cd_real and Cd_imaginary are the destination
    components.  The resulting image will also be composed of
    real (C_real') and imaginary (C_imaginary') components.

    In all cases the blending equation is evaluated separately for each
    color component.

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

    None

Dependencies on EXT_blend_minmax

    If this extension is supported, but EXT_blend_minmax is not, then
    this extension effectively defines the procedure BlendEquationEXT, its
    parameter FUNC_ADD_EXT, and the query target BLEND_EQUATION_EXT, as
    described in EXT_blend_minmax.  It is therefore as though
    EXT_blend_minmax were also supported, except that equations MIN_EXT
    and MAX_EXT are not supported.

Errors

    INVALID_ENUM is generated by BlendEquationEXT if its single parameter
    is not FUNC_ADD_EXT, MIN_EXT, MAX_EXT, FUNC_SUBTRACT_EXT,
    FUNC_REVERSE_SUBTRACT_EXT, FUNC_COMPLEX_MULTIPLY_EXT,
    FUNC_COMPLEX_ADD_EXT, FUNC_COMPLEX_PHASE_EXT or FUNC_COMPLEX_MAGNITUDE_EXT.

    INVALID_OPERATION is generated if BlendEquationEXT is executed with
    parameter FUNC_COMPLEX_MULTIPLY_EXT or FUNC_COMPLEX_ADD_EXT and the
    destination buffer is not an SGIX_cbuffer.

    INVALID_OPERATION is generated if BlendEquationEXT is executed between
    the execution of Begin and the corresponding execution to End.

New State

    Get Value		Get Command	Type	Initial Value	Attribute
    ---------		-----------	----	-------------	---------
    BLEND_EQUATION_EXT	GetIntegerv	??	FUNC_ADD_EXT	color-buffer

New Implementation Dependent State

    None
