• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    APPLE_vertex_array_object
4
5Name Strings
6
7    GL_APPLE_vertex_array_object
8
9Contact
10
11    Bob Beretta, Apple Computer (beretta 'at' apple.com)
12
13Status
14
15    Complete
16
17Version
18
19    $Date: 2002/09/23 04:37:25 $ $Revision: 1.9 $
20
21Number
22
23    273
24
25Dependencies
26
27    APPLE_vertex_array_range affects the definition of this extension.
28
29    APPLE_element_array affects the definition of this extension.
30
31    ARB_vertex_program affects the definition of this extension.
32
33    EXT_secondary_color affects the definition of this extension.
34
35    EXT_fog_coord affects the definition of this extension.
36
37    ARB_vertex_blend affects the definition of this extension.
38
39Overview
40
41    This extension introduces named vertex array objects which encapsulate
42    vertex array state on the client side. The main purpose of these
43    objects is to keep pointers to static vertex data and provide a name
44    for different sets of static vertex data.
45
46    By extending vertex array range functionality this extension allows multiple
47    vertex array ranges to exist at one time, including their complete sets of
48    state, in manner analogous to texture objects.
49
50    GenVertexArraysAPPLE creates a list of n number of vertex array object
51    names.  After creating a name, BindVertexArrayAPPLE associates the name with
52    a vertex array object and selects this vertex array and its associated
53    state as current.  To get back to the default vertex array and its
54    associated state the client should bind to vertex array named 0.
55
56    Once a client is done using a vertex array object it can be deleted with
57    DeleteVertexArraysAPPLE.  The client is responsible for allocating and
58    deallocating the memory used by the vertex array data, while the
59    DeleteVertexArraysAPPLE command deletes vertex array object names and
60    associated state only.
61
62Issues
63
64    None
65
66New Procedures and Functions
67
68    void BindVertexArrayAPPLE(uint array);
69
70    void DeleteVertexArraysAPPLE(sizei n, const uint *arrays);
71
72    void GenVertexArraysAPPLE(sizei n, const uint *arrays);
73
74    boolean IsVertexArrayAPPLE(uint array);
75
76New Tokens
77
78    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
79    and GetDoublev:
80
81    VERTEX_ARRAY_BINDING_APPLE                 0x85B5
82
83Additions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation,
84    Rasterization, Per-Fragment Operations and the Frame Buffer)
85
86    None
87
88Additions to Chapter 5 of the 1.1 Specification (Special Functions)
89
90    A vertex array object is created by binding an unused name. This binding is
91    accomplished by calling BindVertexArrayAPPLE with id set to the name of the
92    new vertex array object.
93
94    The state encapsulated by a vertex array object immediately after it is
95    first bound is equivalent to the default vertex array state at GL
96    initialization.  Subsequent bindings of a vertex array object have no effect
97    on its encapsulated state unless changed explicitly.
98
99    When an OpenGL context is created, there is set of default vertex array
100    state associated with the context. In order that the access to this default
101    state is not lost, this extension treats the default state as if its name
102    was zero. Unlike other vertex array objects, the zero named object cannot be
103    deleted.
104
105    GenVertexArraysAPPLE returns a list of <n> unused vertex array object names
106    in <arrays>.  Only names that were not in use immediately prior to the call
107    to GenVertexArraysAPPLE are included in the returned list.  Names returned
108    by GenVertexArraysAPPLE are marked as used, so that they are not returned by
109    subsequent calls to GenVertexArraysAPPLE, but they are associated with a
110    vertex array object only after they are first bound (just as if the name
111    were unused).
112
113    Vertex array objects are deleted by calling DeleteVertexArraysAPPLE with
114    <arrays> specifying a list of <n> names to be deleted.  Once a vertex array
115    object is deleted it has no contents and its name is freed.  If a vertex
116    array object that is currently bound is deleted, the binding for that object
117    reverts to zero and the default vertex array becomes current.
118    DeleteVertexArraysAPPLE ignores names that do not correspond to existing
119    vertex array objects, including zero.
120
121Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
122
123    IsVertexArrayAPPLE returns TRUE if <id> is the name of a valid vertex array
124    object.  If <id> is zero, or is a non-zero value that is not the name of a
125    vertex array object, or if an error condition occurs, IsVertexArrayAPPLE
126    returns FALSE.  A name that has been returned GenVertexArraysAPPLE but never
127    bound with BindVertexArrayAPPLE is not the name of a vertex array object.
128
129    The name of the currently bound vertex array object is returned in <params>
130    when GetIntegerv is called with <pname> set to  VERTEX_ARRAY_BINDING_APPLE.
131    If the default vertex array object is currently bound, zero is returned.
132
133    A vertex array object comprises vertex array pointers, the size, type, and
134    stride information for each array, the corresponding enable flags and the
135    range of static data for each array. More explicitly, the state list
136
137    VERTEX_ARRAY
138    VERTEX_ARRAY_SIZE
139    VERTEX_ARRAY_TYPE
140    VERTEX_ARRAY_STRIDE
141    VERTEX_ARRAY_POINTER
142    NORMAL_ARRAY
143    NORMAL_ARRAY_TYPE
144    NORMAL_ARRAY_STRIDE
145    NORMAL_ARRAY_POINTER
146    COLOR_ARRAY
147    COLOR_ARRAY_SIZE
148    COLOR_ARRAY_TYPE
149    COLOR_ARRAY_STRIDE
150    COLOR_ARRAY_POINTER
151    INDEX_ARRAY
152    INDEX_ARRAY_TYPE
153    INDEX_ARRAY_STRIDE
154    INDEX_ARRAY_POINTER
155    TEXTURE_COORD_ARRAY
156    TEXTURE_COORD_ARRAY_SIZE
157    TEXTURE_COORD_ARRAY_TYPE
158    TEXTURE_COORD_ARRAY_STRIDE
159    TEXTURE_COORD_ARRAY_POINTER
160    EDGE_FLAG_ARRAY
161    EDGE_FLAG_ARRAY_STRIDE
162    EDGE_FLAG_ARRAY_POINTER
163
164    composes a single vertex array object.
165
166    Additionally, if APPLE_vertex_array_range is supported the state list also
167    includes
168
169    VERTEX_ARRAY_RANGE_POINTER_APPLE
170    VERTEX_ARRAY_RANGE_LENGTH_APPLE
171
172    Additionally, if ARB_vertex_program is supported the state list also
173    includes
174
175    VERTEX_ATTRIB_ARRAY_ARB
176    VERTEX_ATTRIB_ARRAY_SIZE_ARB
177    VERTEX_ATTRIB_ARRAY_TYPE_ARB
178    VERTEX_ATTRIB_ARRAY_STRIDE_ARB
179    VERTEX_ATTRIB_ARRAY_POINTER_ARB
180
181    Additionally, if EXT_secondary_color is supported the state list also
182    includes
183
184    SECONDARY_COLOR_ARRAY_EXT
185    SECONDARY_COLOR_ARRAY_SIZE_EXT
186    SECONDARY_COLOR_ARRAY_TYPE_EXT
187    SECONDARY_COLOR_ARRAY_STRIDE_EXT
188    SECONDARY_COLOR_ARRAY_POINTER_EXT
189
190    Additionally, if EXT_fog_coord is supported the state list also includes
191
192    FOG_COORDINATE_ARRAY_EXT
193    FOG_COORDINATE_ARRAY_TYPE_EXT
194    FOG_COORDINATE_ARRAY_STRIDE_EXT
195    FOG_COORDINATE_ARRAY_POINTER_EXT
196
197    Additionally, if ARB_vertex_blend is supported the state list also includes
198
199    WEIGHT_ARRAY_ARB
200    WEIGHT_ARRAY_SIZE_ARB
201    WEIGHT_ARRAY_TYPE_ARB
202    WEIGHT_ARRAY_STRIDE_ARB
203    WEIGHT_ARRAY_POINTER_ARB
204
205    Additionally, if APPLE_element_array is supported the state list also
206    includes
207
208    ELEMENT_ARRAY_APPLE
209    ELEMENT_ARRAY_TYPE_APPLE
210    ELEMENT_ARRAY_POINTER_APPLE
211
212    When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, the
213    array pointers, types, size and stride are pushed, as well as array pointer
214    enables and the current vertex array object binding. When the attribute set
215    that includes vertex array information is popped, the binding is first
216    restored to its pushed value and then the enables and the array pointers,
217    types, size and stride are restored to their pushed values.
218
219Additions to the GLX Specification
220
221    No change is made to the GLX API.
222
223GLX Protocol
224
225    None
226
227Errors
228
229    INVALID_OPERATION is generated if any of the commands defined in this
230    extension is executed between the execution of Begin and the corresponding
231    execution of End.
232
233New State
234
235    Get Value                    Get Command Type    Value   Attrib
236    ---------                    ----------- ----    ------- ------
237    VERTEX_ARRAY_BINDING_APPLE   GetIntegerv Z+      0       vertex-array
238
239New Implementation Dependent State
240
241    None
242
243Revision History
244
245    None
246