Back to the OpenGL extension cross reference

GL_IBM_multimode_draw_arrays


Name


    IBM_multimode_draw_arrays

Name Strings


    GL_IBM_multimode_draw_arrays

Contact


    Ian Romanick, IBM (idr 'at' us.ibm.com)

Version


    IBM Date: 2003/12/16 15:48:00  Revision: 1.2 

Number


    200

Dependencies


    OpenGL 1.1 is required. The language is written against the OpenGL 1.2
specification.

Overview


    These functions behave identically to the standard OpenGL 1.1 functions
glDrawArrays() and glDrawElements() except they handle multiple lists of
vertices and multiple primitive modes in one call. Their main purpose is
to allow one function call to render more than one primitive regardless
of the primitive mode.

This extension is similar to the EXT_multi_draw_arrays extension
except that it accomodates the specification of a unique mode for
each primitive.


New Procedures and Functions


    void glMultiModeDrawArraysIBM(const GLenum *mode,
const GLint *first,
const GLsizei *count,
GLsizei primcount,
GLint modestride)
Parameters
----------
mode Points to an array of primitive modes.
Symbolic constants GL_POINTS,
GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES,
GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN,
GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS,
and GL_POLYGON are accepted primitive modes.

first Points to an array of starting indices in
the enabled arrays.

count Points to an array of the number of indices
to be rendered.

primcount Specifies the size of first and count arrays.
The number of primitives.


modestride Specifies the how the mode array is strided.
Typical values are 0 (single primitive mode
for all primitives) and sizeof(GLenum)
(seperate primitive mode for each primitive).


void glMultiModeDrawElementsIBM(const GLenum *mode,
const GLsizei *count,
GLenum type,
const GLvoid * const *indices,
GLsizei primcount,
GLint modestride)

Parameters
----------
mode Points to an array of primitive modes.
Symbolic constants GL_POINTS,
GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES,
GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN,
GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS,
and GL_POLYGON are accepted primitive modes.

count Points to an array of the element counts

type Specifies the type of the values in indices.
Must be one of GL_UNSIGNED_BYTE,
GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT.

indices Specifies a pointer to the location where
the indices are stored.

primcount Specifies the size of the count array. The
number of primitives.

modestride Specifies the how the mode array is strided.
Typical values are 0 (single primitive mode
for all primitives) and sizeof(GLenum)
(seperate primitive mode for each primitive).

New Tokens


    None

Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)


    Section 2.8 Vertex Arrays:

The command

void glMultiModeDrawArraysIBM(const GLenum *mode,
const GLint *first,
const GLsizei *count,
GLsizei primcount,
GLint modestride)

Behaves identically to DrawArrays except that a list of arrays and
a list of primitive modes is specified instead. The number of lists
is specified in the primcount parameter. It has the same effect as:

for(i=0; i<primcount; i++) {
if (*(count+i)>0)
DrawArrays(*((GLenum *)((char *)mode+i*modestride)),
*(first+i),
*(count+i));
}

The command

void glMultiModeDrawElementsIBM(const GLenum *mode,
const GLsizei *count,
GLenum type,
const GLvoid * const *indices,
GLsizei primcount,
GLint modestride)

Behaves identically to DrawElements except that a list of arrays and
a list of primitive mode is specified instead. The number of lists is
specified in the primcount parameter. It has the same effect as:

for(i=0; i<primcount; i++) {
if (*(count+i)>0)
DrawElements(*((GLenum *)((char *)mode+i*modestride)),
*(count+i),
type,
*(indices+i));
}

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)


    None.

Additions to the GLX Specification


    None.

GLX Protocol


    None.

Errors


    GL_INVALID_ENUM is generated if <mode> contains an unaccepted value.

GL_VALUE is generated if <primcount> is negative.

GL_INVALID_OPERATION is generated if glMultiModeDrawArraysIBM or
glMultiModeDrawElementsIBM is executed between the execution of glBegin
and the corresponding glEnd.

New State


    None.

Revision History


    2003/12/16  idr      Added missing const-qualifiers.
1998/12/10 Initial version.

Implementation Support


   List of OpenGL implementations supporting the GL_IBM_multimode_draw_arrays extension

Original File


   Original text file for the GL_IBM_multimode_draw_arrays extension


Page generated on Sun Nov 20 18:38:55 2005