| |
| |
| Name |
| |
| IBM_vertex_array_lists |
| |
| Name Strings |
| |
| GL_IBM_vertex_array_lists |
| |
| Version |
| |
| IBM Date: 1999/06/02 13:18:29 Revision: 1.8 |
| |
| Number |
| |
| 201 |
| |
| Dependencies |
| |
| OpenGL 1.1 is required. The language is written against the OpenGL 1.2 |
| specification. |
| |
| This extension affects/interacts with the EXT_multi_draw_arrays and |
| IBM_multimode_draw_arrays extensions. |
| |
| Support for the FogCoordPointerListIBM function is only required if |
| the EXT_fog_coord extension is supported. |
| |
| Support for the SecondaryColorPointerListIBM function is only required if |
| the EXT_secondary_color extension is supported. |
| |
| Overview |
| |
| This extension introduces seven (7) new functions that set the |
| vertex array pointers. However, instead of a single pointer, these |
| functions provide a list of array pointers that can be used by the |
| EXT_multi_draw_arrays and IBM_multimode_draw_arrays extension |
| functions to draw from multiple of vertex arrays. The first |
| primitive will use the first array in the list, the second primitive |
| will use the second array in the list, and so forth. If a glDrawArray, |
| DrawElements, or DrawRangeElements function is used, then |
| only the first vertex array in the list is used. |
| |
| When a vertex array list is specified, only the list pointer |
| is kept by the underlying OpenGL function. Therefore, the list |
| must be staticly defined for the entire duration of its usage, |
| much in the same manner as the vertex arrays themselves. Also |
| note that the list function can therefore also be used to change |
| array pointers without making a OpenGL API function call. |
| |
| A <ptrstride> value of zero (0) can be used to force all primitives |
| of a multi-vertex array to use only the first vertex array in |
| the list. |
| |
| The <stride> parameter of the list pointer functions differs from |
| that of the non-list vertex array pointer functions in that 1) |
| both negative and positive strides are accepted thusly allowing |
| vertex lists to be rendered in reverse order; 2) a <stride> of |
| zero (0) results in no stride and can be used to specify a single |
| vertex attribute for each vertex of the primitive. |
| |
| These new functions are a superset of the standard OpenGL 1.2 vertex |
| array (non-list) pointer functions and share common state. Therefore, |
| the list pointer and non-list pointer functions can be used |
| interchangably. |
| |
| New queries are provided by this extension so that ZAPdb can be extended |
| to query the list pointer state whenever a vertex array function |
| is traced. The pointer returned by a query of *_ARRAY_POINTER returns |
| the first entry in the array list. |
| |
| |
| Issues |
| |
| New Procedures and Functions |
| |
| void ColorPointerListIBM (GLint size, |
| GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride) |
| |
| void SecondaryColorPointerListIBM (GLint size, |
| GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride) |
| |
| void EdgeFlagPointerListIBM (GLint stride, |
| const GLboolean **pointer, |
| GLint ptrstride); |
| |
| void FogCoordPointerListIBM (GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride) |
| |
| void IndexPointerListIBM (GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride); |
| |
| void NormalPointerListIBM (GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride); |
| |
| void TexCoordPointerListIBM (GLint size, |
| GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride); |
| |
| void VertexPointerListIBM (GLint size, |
| GLenum type, |
| GLint stride, |
| const void **pointer, |
| GLint ptrstride); |
| |
| |
| Parameters |
| ---------- |
| size Specifies the number of values per vertex that |
| are stored in the array. |
| |
| type Specifies the data type of the values stored in |
| the array. |
| |
| stride Specifies the number of basic elements (for most |
| systems this is bytes) between array values. |
| |
| pointer Pointer to a list of array pointers. |
| |
| ptrstride Specifies the number of basic elements (for most |
| systems this is bytes) bewteen array pointers |
| in the pointer lists pointed to by <pointer>. |
| |
| Valid <size> and <type> parameters for each of the functions is |
| the same as the non-list vertex array counterparts. |
| |
| <size> <type> |
| ------ ------------------------ |
| ColorPointerListIBM 3,4 GLshort, GLint, GLfloat, |
| GLdouble |
| EdgeFlagPointerListIBM - - |
| FogCoordPointerListIBM 1 GLfloat, GLdouble |
| IndexPointerListIBM - GLubyte, GLshort, GLint, |
| GLfloat, GLdouble |
| NormalPointerListIBM - GLbyte, GLshort, GLint, |
| GLfloat, GLdouble |
| SecondaryColorPointerListIBM 3,4 GLshort, GLint, GLfloat, |
| GLdouble |
| TexCoordPointerListIBM 1,2,3,4 GLshort, GLint, GLfloat, |
| GLdouble |
| VertexPointerListIBM 2,3,4 GLshort, GLint, GLfloat, |
| GLdouble |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of GetPointerv: |
| |
| VERTEX_ARRAY_LIST_IBM 103070 |
| NORMAL_ARRAY_LIST_IBM 103071 |
| COLOR_ARRAY_LIST_IBM 103072 |
| INDEX_ARRAY_LIST_IBM 103073 |
| TEXTURE_COORD_ARRAY_LIST_IBM 103074 |
| EDGE_FLAG_ARRAY_LIST_IBM 103075 |
| FOG_COORDINATE_ARRAY_LIST_IBM 103076 |
| SECONDARY_COLOR_ARRAY_LIST_IBM 103077 |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, |
| GetFloatv, and GetDoublev: |
| |
| VERTEX_ARRAY_LIST_STRIDE_IBM 103080 |
| NORMAL_ARRAY_LIST_STRIDE_IBM 103081 |
| COLOR_ARRAY_LIST_STRIDE_IBM 103082 |
| INDEX_ARRAY_LIST_STRIDE_IBM 103083 |
| TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 |
| EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 |
| FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 |
| SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 |
| |
| |
| Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) |
| |
| Section 2.8 Vertex Arrays: |
| |
| ??? yet to be written ??? |
| |
| Additions to Chapter 3 of the 1.2 Specification (Rasterization) |
| |
| None. |
| |
| Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and |
| |
| None. |
| |
| Additions to Chapter 5 of the 1.2 Specification (Special Functions) |
| |
| None. |
| |
| Additions to Chapter 6 of the 1.2 Specification (State and State Requests) |
| |
| Additional table entries for Table 6.6. Vertex Array Data |
| |
| Get Initial |
| Get Value Type Cmnd Value Description Sec Attribute |
| --------------------------------- ---- ----------- ------- ------------------------------ --- ----------- |
| VERTEX_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of vertex arrays 2.8 vertex-array |
| NORMAL_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of normal arrays 2.8 vertex-array |
| COLOR_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of color arrays 2.8 vertex-array |
| INDEX_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of index arrays 2.8 vertex-array |
| TEXTURE_COORD_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of texture arrays 2.8 vertex-array |
| EDGE_FLAG_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of edgeflag arrays 2.8 vertex-array |
| FOG_COORD_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of fog arrays 2.8 vertex-array |
| SECONDARY_COLOR_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of secondary arrays 2.8 vertex-array |
| VERTEX_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Vertex list ptr stride 2.8 vertex-array |
| NORMAL_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Normal list ptr stride 2.8 vertex-array |
| COLOR_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Color list ptr stride 2.8 vertex-array |
| INDEX_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Index list ptr stride 2.8 vertex-array |
| TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Texture coord list ptr stride 2.8 vertex-array |
| EDGE_FLAG_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Edgeflag list ptr stride 2.8 vertex-array |
| FOG_COORD_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Fog coord list ptr stride 2.8 vertex-array |
| SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Secondary color list ptr stride 2.8 vertex-array |
| |
| Notes: |
| 1) The initial list pointer values point to a NULL pointer. |
| |
| |
| Additions to the GLX Specification |
| |
| None. |
| |
| GLX Protocol |
| |
| None. |
| |
| Errors |
| |
| GL_INVALID_VALUE is generated if <size> is not an accepted value. |
| |
| GL_INVALID_ENUM is generated if <type> is not an accepted value. |
| |
| New State |
| |
| None. |
| |
| |