Back to the OpenGL extension cross reference
GL_IBM_multimode_draw_arrays
    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.
    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).
    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