Back to the OpenGL extension cross reference
GL_EXT_static_vertex_array
    EXT_static_vertex_array
Name Strings
    GL_EXT_static_vertex_array
Version
    $Date: 1997/09/17 18:24:20 $ $Revision: 1.1 $
Number
    ?? 
Dependencies
    None
Overview
    This extension defines an interface which allows vertex array
    data to be cached or pre-compiled for more efficient rendering.  This
    is useful for implementations which can cache the transformed results
    of array data for reuse by several DrawArrays, ArrayElement, or
    DrawElements commands.  It is also useful for implementations which
    can transfer array data to fast memory for more efficient processing.
    For example, rendering an M by N mesh of quadrilaterals can be
    accomplished by setting up vertex arrays containing all of the
    vertexes in the mesh and issuing M DrawElements commands each of
    which operate on 2 * N vertexes.  Each DrawElements command after
    the first will share N vertexes with the preceding DrawElements
    command.  If the vertex array data is locked while the DrawElements
    commands are executed, then OpenGL may be able to transform each
    of these shared vertexes just once.
    void LockArraysEXT (sizei count)
    void UnlockArraysEXT (void)
    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
    GetFloatv, and GetDoublev:
      
        ARRAY_ELEMENT_LOCK_COUNT_EXT
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
    After the discussion of InterleavedArrays, add a description of
    array compiling/locking.
    The currently enabled vertex arrays can be locked with the command
    LockArraysEXT.  When the vertex arrays are locked, the data
    specified by the currently enabled vertex arrays is considered
    to be static by GL. An implementation can delay  the referencing 
    of the data used by the commands DrawArrays, ArrayElement or
    DrawElements or pre-process the array data or cache the transformed 
    vertex data associated with the currently enabled vertex arrays.  
    The vertex arrays are unlocked by the command UnlockArraysEXT.
    The lock count, ARRAY_ELEMENT_LOCK_COUNT_EXT, is reset
    to 0 when the vertex arrays are unlocked. 
 
    The error INVALID_OPERATION is generated if any array pointer
    command such as EdgeFlagPointer, TexCoordPointer, ColorPointer, 
    IndexPointer, NormalPointer, VertexPointer or InterleavedArrays
    or EnableClientState/DisableClientState with array set
    to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY,
    INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between
    the execution of LocakArraysEXT and the corresponding
    UnlockArraysExt.
    Between LockArraysEXT and UnlockArraysEXT the application
    should ensure that none of the array data in the range 
    specified by <count> are changed.  Changes to the array data 
    between the execution of LockArraysEXT and UnlockArraysEXT 
    commands may affect calls may affect DrawArrays, ArrayElement, 
    or DrawElements commands in non-sequential ways.
    While using a static vertex array, references to array elements
    by the commands DrawArrays, ArrayElement, or DrawElements which
    are outside of the range specified by <count> are undefined.
 
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
    None
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)
    None
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
    LockArraysEXT and UnlockArraysEXT are not complied into display lists
    but are executed immediately.
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
    None
Additions to the GLX Specification
    None 
GLX Protocol
    None 
Errors
    INVALID_VALUE is generated if LockArraysEXT parameter <count> is less than
    or equal to zero.
    INVALID_OPERATION is generated if LockArraysEXT is called between execution
    of LockArraysEXT and corresponding execution of UnlockArraysEXT.
    INVALID_OPERATION is generated if UnlockArraysEXT is called without a
    corresponding previous execution of LockArraysEXT.
    INVALID_OPERATION may be generated if LockArraysEXT or UnlockArraysEXT is called
    between execution of Begin and the corresponding execution of End.
    INVALID_OPERATION is generated if any array pointer command such as 
    EdgeFlagPointer, TexCoordPointer, ColorPointer, IndexPointer, 
    NormalPointer, VertexPointer or InterleavedArrays
    or EnableClientState/DisableClientState with array set
    to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY,
    INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between
    the execution of LocakArraysEXT and the corresponding
    UnlockArraysExt.
New State
                                                                Initial
    Get Value                           Get Command     Type    Value   Attrib
    ---------                           -----------     ----    ------- ------
    ARRAY_ELEMENT_LOCK_COUNT_EXT        GetIntegerv     Z+      0       client-vertex-array
New Implementation Dependent State
    None
Implementation Support
   List of OpenGL implementations supporting the GL_EXT_static_vertex_array extension
Original File
   Original text file for the GL_EXT_static_vertex_array extension
Page generated on Sun Nov 20 18:38:22 2005