blob: c0cb4044feb2109b168e8102ba2bb7f07f06b643 [file] [log] [blame]
Name
EXT_vertex_array_set / GenName version
Name Strings
GL_EXT_vertex_array_set
Version
$Date: 1997/09/17 18:23:47 $ $Revision: 1.2 $
Number
???
Dependencies
EXT_static_vertex_array
Overview
This extension introduces named vertex array sets which encapsulate
vertex array state on the client side. The main purpose of these
sets is to keep pointers to static vertex data and provide a name
for different sets of static vertex data. The specification of
static vertex data is done through EXT_static_vertex_array extension.
Issues
* Should we allow vertex array sets to be shared between
client side contexts?
New Procedures and Functions
void GenArraySetsEXT(sizei n,
uint* arrayset);
void BindArraySetEXT(uint arrayset);
void DeleteArraySetsEXT(sizei n,
const uint* arrayset);
boolean IsArraySetEXT(uint arrayset);
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
ARRAY_SET_BINDING_EXT
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 set is created by binding an unused name. This binding
is accomplished by calling BindArraySetEXT with arrayset set to
the name of the new vertex array set.
The state encapsulated by a vertex array set immediately after
it is first bound is quivalent to the default vertex array
state at GL initialization. Subsequent bindings of a vertex
array set 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 sets, the zero
set cannot be deleted.
GenArraySetsEXT returns <n> vertex array set names in <arrayset>.
These names are chosen in an unspecified manner, the only condition being
that only names that were not in use immediately prior to the call to
GenArraySetsEXT are considered. Names returned by GenArraySetsEXT
are marked as used (so that they are not returned by subsequent calls to
GenArraySetsEXT), but they are associated with a vertex array set
only after they are first bound (just as if the name were unused).
Vertex array sets are deleted by calling DeleteArraySetsEXT with
<arrayset> pointing to a list of <n> names of array sets to be
deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt
on the sets to be deleted before deleting the <arrayset>. Once a
vertex array set is deleted, it has no contents, and its name is freed.
If a pointer set that is currently bound is deleted, the binding
reverts to zero. DeleteArraySetsEXT ignores names that do not
correspond to array sets, including zero.
Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
IsArraySetEXT returns TRUE if <arrayset> is the name of a valid
vertex array set. If <arrayset> is zero, or is a non-zero value
that is not the name of a vertex array set, or if an error condition
occurs, IsArraySetEXT returns FALSE.
The name of the currently bound vertex array set is returned in <params>
when GetIntegerv is called with <pname> set to ARRAY_SET_BINDING_EXT.
If no vertex array set is bound, zero is returned.
A vertex array set comprises of vertex array pointers, the size and
type information for each array, the corresponding enable flags and the
range of static data for each array. More explicitly, the state list
ARRAY_ELEMENT_LOCK_COUNT_EXT
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 set.
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 set 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
are restored to their pushed values.
Additions to the GLX Specification
No change is made to the GLX API.
GLX Protocol
None
Errors
INVALID_VALUE is generated if GenArraySetsEXT parameter <n> is negative.
INVALID_VALUE is generated if DeleteArraySetsEXT parameter <n> is
negative.
INVALID_OPERATION is generated if BindArraySetEXT parameter <n> is
negative.
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
--------- ----------- ---- ------- ------
ARRAY_SET_BINDING_EXT GetIntegerv Z+ 0 vertex-array
New Implementation Dependent State
None