• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    EXT_static_vertex_array
4
5Name Strings
6
7    GL_EXT_static_vertex_array
8
9Version
10
11    $Date: 1997/09/17 18:24:20 $ $Revision: 1.1 $
12
13Number
14
15    ??
16
17Dependencies
18
19    None
20
21Overview
22
23    This extension defines an interface which allows vertex array
24    data to be cached or pre-compiled for more efficient rendering.  This
25    is useful for implementations which can cache the transformed results
26    of array data for reuse by several DrawArrays, ArrayElement, or
27    DrawElements commands.  It is also useful for implementations which
28    can transfer array data to fast memory for more efficient processing.
29
30    For example, rendering an M by N mesh of quadrilaterals can be
31    accomplished by setting up vertex arrays containing all of the
32    vertexes in the mesh and issuing M DrawElements commands each of
33    which operate on 2 * N vertexes.  Each DrawElements command after
34    the first will share N vertexes with the preceding DrawElements
35    command.  If the vertex array data is locked while the DrawElements
36    commands are executed, then OpenGL may be able to transform each
37    of these shared vertexes just once.
38
39New Procedures and Functions
40
41    void LockArraysEXT (sizei count)
42    void UnlockArraysEXT (void)
43
44New Tokens
45
46    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
47    GetFloatv, and GetDoublev:
48
49        ARRAY_ELEMENT_LOCK_COUNT_EXT
50
51Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
52
53    After the discussion of InterleavedArrays, add a description of
54    array compiling/locking.
55
56    The currently enabled vertex arrays can be locked with the command
57    LockArraysEXT.  When the vertex arrays are locked, the data
58    specified by the currently enabled vertex arrays is considered
59    to be static by GL. An implementation can delay  the referencing
60    of the data used by the commands DrawArrays, ArrayElement or
61    DrawElements or pre-process the array data or cache the transformed
62    vertex data associated with the currently enabled vertex arrays.
63    The vertex arrays are unlocked by the command UnlockArraysEXT.
64    The lock count, ARRAY_ELEMENT_LOCK_COUNT_EXT, is reset
65    to 0 when the vertex arrays are unlocked.
66
67    The error INVALID_OPERATION is generated if any array pointer
68    command such as EdgeFlagPointer, TexCoordPointer, ColorPointer,
69    IndexPointer, NormalPointer, VertexPointer or InterleavedArrays
70    or EnableClientState/DisableClientState with array set
71    to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY,
72    INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between
73    the execution of LocakArraysEXT and the corresponding
74    UnlockArraysExt.
75
76    Between LockArraysEXT and UnlockArraysEXT the application
77    should ensure that none of the array data in the range
78    specified by <count> are changed.  Changes to the array data
79    between the execution of LockArraysEXT and UnlockArraysEXT
80    commands may affect calls may affect DrawArrays, ArrayElement,
81    or DrawElements commands in non-sequential ways.
82
83    While using a static vertex array, references to array elements
84    by the commands DrawArrays, ArrayElement, or DrawElements which
85    are outside of the range specified by <count> are undefined.
86
87Additions to Chapter 3 of the 1.1 Specification (Rasterization)
88
89    None
90
91Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
92and the Frame Buffer)
93
94    None
95
96Additions to Chapter 5 of the 1.1 Specification (Special Functions)
97
98    LockArraysEXT and UnlockArraysEXT are not complied into display lists
99    but are executed immediately.
100
101Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
102
103    None
104
105Additions to the GLX Specification
106
107    None
108
109GLX Protocol
110
111    None
112
113Errors
114
115    INVALID_VALUE is generated if LockArraysEXT parameter <count> is less than
116    or equal to zero.
117
118    INVALID_OPERATION is generated if LockArraysEXT is called between execution
119    of LockArraysEXT and corresponding execution of UnlockArraysEXT.
120
121    INVALID_OPERATION is generated if UnlockArraysEXT is called without a
122    corresponding previous execution of LockArraysEXT.
123
124    INVALID_OPERATION may be generated if LockArraysEXT or UnlockArraysEXT is called
125    between execution of Begin and the corresponding execution of End.
126
127    INVALID_OPERATION is generated if any array pointer command such as
128    EdgeFlagPointer, TexCoordPointer, ColorPointer, IndexPointer,
129    NormalPointer, VertexPointer or InterleavedArrays
130    or EnableClientState/DisableClientState with array set
131    to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY,
132    INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between
133    the execution of LocakArraysEXT and the corresponding
134    UnlockArraysExt.
135
136New State
137                                                                Initial
138    Get Value                           Get Command     Type    Value   Attrib
139    ---------                           -----------     ----    ------- ------
140
141    ARRAY_ELEMENT_LOCK_COUNT_EXT        GetIntegerv     Z+      0       client-vertex-array
142
143New Implementation Dependent State
144
145    None
146
147