Name

    SGIX_texture_multi_buffer

Name Strings

    GL_SGIX_texture_multi_buffer

Version

    $Date: 1995/06/13 23:48:23 $ $Revision: 1.2 $

Number

    53

Dependencies

    EXT_texture_object affects the definition of this extension

Overview

    This extension provides an API for the application to specify that
    the OpenGL should handle multiple textures in such a way that,
    wherever possible, a texture definition or redefinition can occur
    in parallel with rendering that uses a different texture.

    The texture_object extension allows the simultaneous definition
    of multiple textures; any texture that is not being used for 
    rendering can, in principle, have its definition or operations
    in its definition (e.g. downloading to hardware) occur in parallel
    with the use of another texture. This is true as long as all
    redefinitions strictly follow any use of the previous definition.

    Conceptually this is similar to frame buffer double-buffering,
    except that the intent here is to simply provide a hint to the
    OpenGL to promote such double-buffering if and wherever possible.
    The effect of such a hint is to speed up operations without
    affecting the result. The user on any particular system must be
    knowledgable and prepared to accept any trade-offs which follow
    from such a hint.

    GL_FASTEST in this context means that texture multi-buffering
    is being used whenever possible to improve performance. 
    Generally, textures that are adjacent in a sequence of multiple
    texture definitions have the greatest chance of being in 
    different buffers. The number of buffers available at any time
    depends on various factors, such as the machine being used and
    the textures' internal formats.

New Procedures and Functions

    None

New Tokens

    Accepted by the <target> parameter of Hint, and by the <pname>
    parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev:

	GL_TEXTURE_MULTI_BUFFER_HINT_SGIX		0x812E

Additions to the Specification

    TBD


Additions to the GLX Specification

    None

Dependencies on EXT_texture_object

    If EXT_texture_object is not implemented, then references to 
    GL_TEXTURE_MULTI_BUFFER_HINT_SGIX in this specification are void.

Errors

    None

New State

    Get Value		        	Get Command	Type	Initial Value	Attrib
    ---------		        	-----------	----	-------------	------
    GL_TEXTURE_MULTI_BUFFER_HINT_SGIX	GetIntegerv	Z3	DONT_CARE	   -

New Implementation Dependent State

    None
