Back to the OpenGL extension cross reference

GL_EXT_static_vertex_array


Name


    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.

New Procedures and Functions


    void LockArraysEXT (sizei count)
void UnlockArraysEXT (void)

New Tokens


    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