| Name |
| |
| APPLE_vertex_array_object |
| |
| Name Strings |
| |
| GL_APPLE_vertex_array_object |
| |
| Contact |
| |
| Bob Beretta, Apple Computer (beretta 'at' apple.com) |
| |
| Status |
| |
| Complete |
| |
| Version |
| |
| $Date: 2002/09/23 04:37:25 $ $Revision: 1.9 $ |
| |
| Number |
| |
| 273 |
| |
| Dependencies |
| |
| APPLE_vertex_array_range affects the definition of this extension. |
| |
| APPLE_element_array affects the definition of this extension. |
| |
| ARB_vertex_program affects the definition of this extension. |
| |
| EXT_secondary_color affects the definition of this extension. |
| |
| EXT_fog_coord affects the definition of this extension. |
| |
| ARB_vertex_blend affects the definition of this extension. |
| |
| Overview |
| |
| This extension introduces named vertex array objects which encapsulate |
| vertex array state on the client side. The main purpose of these |
| objects is to keep pointers to static vertex data and provide a name |
| for different sets of static vertex data. |
| |
| By extending vertex array range functionality this extension allows multiple |
| vertex array ranges to exist at one time, including their complete sets of |
| state, in manner analogous to texture objects. |
| |
| GenVertexArraysAPPLE creates a list of n number of vertex array object |
| names. After creating a name, BindVertexArrayAPPLE associates the name with |
| a vertex array object and selects this vertex array and its associated |
| state as current. To get back to the default vertex array and its |
| associated state the client should bind to vertex array named 0. |
| |
| Once a client is done using a vertex array object it can be deleted with |
| DeleteVertexArraysAPPLE. The client is responsible for allocating and |
| deallocating the memory used by the vertex array data, while the |
| DeleteVertexArraysAPPLE command deletes vertex array object names and |
| associated state only. |
| |
| Issues |
| |
| None |
| |
| New Procedures and Functions |
| |
| void BindVertexArrayAPPLE(uint array); |
| |
| void DeleteVertexArraysAPPLE(sizei n, const uint *arrays); |
| |
| void GenVertexArraysAPPLE(sizei n, const uint *arrays); |
| |
| boolean IsVertexArrayAPPLE(uint array); |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, |
| and GetDoublev: |
| |
| VERTEX_ARRAY_BINDING_APPLE 0x85B5 |
| |
| Additions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, |
| Rasterization, Per-Fragment Operations and the Frame Buffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.1 Specification (Special Functions) |
| |
| A vertex array object is created by binding an unused name. This binding is |
| accomplished by calling BindVertexArrayAPPLE with id set to the name of the |
| new vertex array object. |
| |
| The state encapsulated by a vertex array object immediately after it is |
| first bound is equivalent to the default vertex array state at GL |
| initialization. Subsequent bindings of a vertex array object have no effect |
| on its encapsulated state unless changed explicitly. |
| |
| When an OpenGL context is created, there is set of default vertex array |
| state associated with the context. In order that the access to this default |
| state is not lost, this extension treats the default state as if its name |
| was zero. Unlike other vertex array objects, the zero named object cannot be |
| deleted. |
| |
| GenVertexArraysAPPLE returns a list of <n> unused vertex array object names |
| in <arrays>. Only names that were not in use immediately prior to the call |
| to GenVertexArraysAPPLE are included in the returned list. Names returned |
| by GenVertexArraysAPPLE are marked as used, so that they are not returned by |
| subsequent calls to GenVertexArraysAPPLE, but they are associated with a |
| vertex array object only after they are first bound (just as if the name |
| were unused). |
| |
| Vertex array objects are deleted by calling DeleteVertexArraysAPPLE with |
| <arrays> specifying a list of <n> names to be deleted. Once a vertex array |
| object is deleted it has no contents and its name is freed. If a vertex |
| array object that is currently bound is deleted, the binding for that object |
| reverts to zero and the default vertex array becomes current. |
| DeleteVertexArraysAPPLE ignores names that do not correspond to existing |
| vertex array objects, including zero. |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| IsVertexArrayAPPLE returns TRUE if <id> is the name of a valid vertex array |
| object. If <id> is zero, or is a non-zero value that is not the name of a |
| vertex array object, or if an error condition occurs, IsVertexArrayAPPLE |
| returns FALSE. A name that has been returned GenVertexArraysAPPLE but never |
| bound with BindVertexArrayAPPLE is not the name of a vertex array object. |
| |
| The name of the currently bound vertex array object is returned in <params> |
| when GetIntegerv is called with <pname> set to VERTEX_ARRAY_BINDING_APPLE. |
| If the default vertex array object is currently bound, zero is returned. |
| |
| A vertex array object comprises vertex array pointers, the size, type, and |
| stride information for each array, the corresponding enable flags and the |
| range of static data for each array. More explicitly, the state list |
| |
| VERTEX_ARRAY |
| VERTEX_ARRAY_SIZE |
| VERTEX_ARRAY_TYPE |
| VERTEX_ARRAY_STRIDE |
| VERTEX_ARRAY_POINTER |
| NORMAL_ARRAY |
| NORMAL_ARRAY_TYPE |
| NORMAL_ARRAY_STRIDE |
| NORMAL_ARRAY_POINTER |
| COLOR_ARRAY |
| COLOR_ARRAY_SIZE |
| COLOR_ARRAY_TYPE |
| COLOR_ARRAY_STRIDE |
| COLOR_ARRAY_POINTER |
| INDEX_ARRAY |
| INDEX_ARRAY_TYPE |
| INDEX_ARRAY_STRIDE |
| INDEX_ARRAY_POINTER |
| TEXTURE_COORD_ARRAY |
| TEXTURE_COORD_ARRAY_SIZE |
| TEXTURE_COORD_ARRAY_TYPE |
| TEXTURE_COORD_ARRAY_STRIDE |
| TEXTURE_COORD_ARRAY_POINTER |
| EDGE_FLAG_ARRAY |
| EDGE_FLAG_ARRAY_STRIDE |
| EDGE_FLAG_ARRAY_POINTER |
| |
| composes a single vertex array object. |
| |
| Additionally, if APPLE_vertex_array_range is supported the state list also |
| includes |
| |
| VERTEX_ARRAY_RANGE_POINTER_APPLE |
| VERTEX_ARRAY_RANGE_LENGTH_APPLE |
| |
| Additionally, if ARB_vertex_program is supported the state list also |
| includes |
| |
| VERTEX_ATTRIB_ARRAY_ARB |
| VERTEX_ATTRIB_ARRAY_SIZE_ARB |
| VERTEX_ATTRIB_ARRAY_TYPE_ARB |
| VERTEX_ATTRIB_ARRAY_STRIDE_ARB |
| VERTEX_ATTRIB_ARRAY_POINTER_ARB |
| |
| Additionally, if EXT_secondary_color is supported the state list also |
| includes |
| |
| SECONDARY_COLOR_ARRAY_EXT |
| SECONDARY_COLOR_ARRAY_SIZE_EXT |
| SECONDARY_COLOR_ARRAY_TYPE_EXT |
| SECONDARY_COLOR_ARRAY_STRIDE_EXT |
| SECONDARY_COLOR_ARRAY_POINTER_EXT |
| |
| Additionally, if EXT_fog_coord is supported the state list also includes |
| |
| FOG_COORDINATE_ARRAY_EXT |
| FOG_COORDINATE_ARRAY_TYPE_EXT |
| FOG_COORDINATE_ARRAY_STRIDE_EXT |
| FOG_COORDINATE_ARRAY_POINTER_EXT |
| |
| Additionally, if ARB_vertex_blend is supported the state list also includes |
| |
| WEIGHT_ARRAY_ARB |
| WEIGHT_ARRAY_SIZE_ARB |
| WEIGHT_ARRAY_TYPE_ARB |
| WEIGHT_ARRAY_STRIDE_ARB |
| WEIGHT_ARRAY_POINTER_ARB |
| |
| Additionally, if APPLE_element_array is supported the state list also |
| includes |
| |
| ELEMENT_ARRAY_APPLE |
| ELEMENT_ARRAY_TYPE_APPLE |
| ELEMENT_ARRAY_POINTER_APPLE |
| |
| When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, the |
| array pointers, types, size and stride are pushed, as well as array pointer |
| enables and the current vertex array object binding. When the attribute set |
| that includes vertex array information is popped, the binding is first |
| restored to its pushed value and then the enables and the array pointers, |
| types, size and stride are restored to their pushed values. |
| |
| Additions to the GLX Specification |
| |
| No change is made to the GLX API. |
| |
| GLX Protocol |
| |
| None |
| |
| Errors |
| |
| INVALID_OPERATION is generated if any of the commands defined in this |
| extension is executed between the execution of Begin and the corresponding |
| execution of End. |
| |
| New State |
| |
| Get Value Get Command Type Value Attrib |
| --------- ----------- ---- ------- ------ |
| VERTEX_ARRAY_BINDING_APPLE GetIntegerv Z+ 0 vertex-array |
| |
| New Implementation Dependent State |
| |
| None |
| |
| Revision History |
| |
| None |