• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1XXX - Not complete yet!!!
2
3Name
4
5    EXT_compiled_vertex_array
6
7Name Strings
8
9    GL_EXT_compiled_vertex_array
10
11Version
12
13    $Date: 1996/11/21 00:52:19 $ $Revision: 1.3 $
14
15Number
16
17    97
18
19Dependencies
20
21    None
22
23Overview
24
25    This extension defines an interface which allows static vertex array
26    data to be cached or pre-compiled for more efficient rendering.  This
27    is useful for implementations which can cache the transformed results
28    of array data for reuse by several DrawArrays, ArrayElement, or
29    DrawElements commands.  It is also useful for implementations which
30    can transfer array data to fast memory for more efficient processing.
31
32    For example, rendering an M by N mesh of quadrilaterals can be
33    accomplished by setting up vertex arrays containing all of the
34    vertexes in the mesh and issuing M DrawElements commands each of
35    which operate on 2 * N vertexes.  Each DrawElements command after
36    the first will share N vertexes with the preceding DrawElements
37    command.  If the vertex array data is locked while the DrawElements
38    commands are executed, then OpenGL may be able to transform each
39    of these shared vertexes just once.
40
41Issues
42
43    * Is compiled_vertex_array the right name for this extension?
44
45    * Should there be an implementation defined maximum number of array
46      elements which can be locked at a time (i.e. MAX_LOCKED_ARRAY_SIZE)?
47
48      Probably not, the lock request can always be ignored with no resulting
49      change in functionality if there are insufficent resources, and allowing
50      the GL to define this limit can make things difficult for applications.
51
52    * Should there be any restrictions on what state can be changed while
53      the vertex array data is locked?
54
55      Probably not.  The GL can check for state changes and invalidate
56      any cached vertex state that may be affected.  This is likely to
57      cause a performance hit, so the preferred use will be to not change
58      state while the vertex array data is locked.
59
60New Procedures and Functions
61
62    void LockArraysEXT (int first, sizei count)
63    void UnlockArraysEXT (void)
64
65New Tokens
66
67    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
68    GetFloatv, and GetDoublev:
69
70        ARRAY_ELEMENT_LOCK_FIRST_EXT        0x81A8
71        ARRAY_ELEMENT_LOCK_COUNT_EXT        0x81A9
72
73Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
74
75   After the discussion of InterleavedArrays, add a description of
76   array compiling/locking.
77
78   The currently enabled vertex arrays can be locked with the command
79   LockArraysEXT.  When the vertex arrays are locked, the GL
80   can compile the array data or the transformed results of array
81   data associated with the currently enabled vertex arrays.  The
82   vertex arrays are unlocked by the command UnlockArraysEXT.
83
84   Between LockArraysEXT and UnlockArraysEXT the application
85   should ensure that none of the array data in the range of
86   elements specified by <first> and <count> are changed.
87   Changes to the array data between the execution of LockArraysEXT
88   and UnlockArraysEXT commands may affect calls may affect DrawArrays,
89   ArrayElement, or DrawElements commands in non-sequential ways.
90
91   While using a compiled vertex array, references to array elements
92   by the commands DrawArrays, ArrayElement, or DrawElements which are
93   outside of the range specified by <first> and <count> are undefined.
94
95Additions to Chapter 3 of the 1.1 Specification (Rasterization)
96
97    None
98
99Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
100and the Frame Buffer)
101
102    None
103
104Additions to Chapter 5 of the 1.1 Specification (Special Functions)
105
106    LockArraysEXT and UnlockArraysEXT are not complied into display lists
107    but are executed immediately.
108
109Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
110
111    None
112
113Additions to the GLX Specification
114
115    XXX - Not complete yet!!!
116
117GLX Protocol
118
119    XXX - Not complete yet!!!
120
121Errors
122
123    INVALID_VALUE is generated if LockArrarysEXT parameter <first> is less
124    than zero.
125
126    INVALID_VALUE is generated if LockArraysEXT parameter <count> is less than
127    or equal to zero.
128
129    INVALID_OPERATION is generated if LockArraysEXT is called between execution
130    of LockArraysEXT and corresponding execution of UnlockArraysEXT.
131
132    INVALID_OPERATION is generated if UnlockArraysEXT is called without a
133    corresponding previous execution of LockArraysEXT.
134
135    INVALID_OPERATION is generated if LockArraysEXT or UnlockArraysEXT is called
136    between execution of Begin and the corresponding execution of End.
137
138New State
139                                                                Initial
140    Get Value                           Get Command     Type    Value   Attrib
141    ---------                           -----------     ----    ------- ------
142
143    ARRAY_ELEMENT_LOCK_FIRST_EXT        GetIntegerv     Z+      0       client-vertex-array
144    ARRAY_ELEMENT_LOCK_COUNT_EXT        GetIntegerv     Z+      0       client-vertex-array
145
146New Implementation Dependent State
147
148    None
149