Function glDrawArrays

  • glDrawArrays specifies multiple geometric primitives with very few subroutine calls. Instead of calling a GL procedure to pass each individual vertex, normal, texture coordinate, edge flag, or color, you can prespecify separate arrays of vertices, normals, and colors and use them to construct a sequence of primitives with a single call to glDrawArrays.

    When glDrawArrays is called, it uses count sequential elements from each enabled array to construct a sequence of geometric primitives, beginning with element first. mode specifies what kind of primitives are constructed and how the array elements construct those primitives.

    Vertex attributes that are modified by glDrawArrays have an unspecified value after glDrawArrays returns. Attributes that aren't modified remain well defined.

    Parameters

    Returns void

    Summary

    render primitives from array data

    Example

    Render a vertex array (not loaded into OpenGL) using texture UV, color, and normal vertex attributes.

    glEnableVertexAttribArray(texcoord_attrib_index); // Attribute indexes were received from calls to glGetAttribLocation, or passed into glBindAttribLocation.
    glEnableVertexAttribArray(normal_attrib_index);
    glEnableVertexAttribArray(color_attrib_index);
    glEnableVertexAttribArray(position_attrib_index);

    glVertexAttribPointer(texcoord_attrib_index, 2, GL_FLOAT, false, 0, texcoords_data); // texcoords_data is a float*, 2 per vertex, representing UV coordinates.
    glVertexAttribPointer(normal_attrib_index, 3, GL_FLOAT, false, 0, normals_data); // normals_data is a float*, 3 per vertex, representing normal vectors.
    glVertexAttribPointer(color_attrib_index, 3, GL_UNSIGNED_BYTE, true, sizeof(unsigned char)*3, colors_data); // colors_data is a unsigned char*, 3 per vertex, representing the color of each vertex.
    glVertexAttribPointer(position_attrib_index, 3, GL_FLOAT, false, 0, vertex_data); // vertex_data is a float*, 3 per vertex, representing the position of each vertex

    glDrawArrays(GL_TRIANGLES, 0, vertex_count); // vertex_count is an integer containing the number of indices to be rendered

    glDisableVertexAttribArray(position_attrib_index);
    glDisableVertexAttribArray(texcoord_attrib_index);
    glDisableVertexAttribArray(normal_attrib_index);
    glDisableVertexAttribArray(color_attrib_index);

    Tutorial

    Songho - OpenGL Vertex Array

    Tutorial

    open.gl - Depth and Stencil Buffers

    Tutorial

    open.gl - Geometry Shaders

    Tutorial

    open.gl - The Graphics Pipeline

    Tutorial

    open.gl - Transform Feedback

    Tutorial

    opengl-tutorial.org - Tutorial 2 : The first triangle

    Tutorial

    opengl-tutorial.org - Tutorial 4 : A Colored Cube

    See

    glDrawArrays

Generated using TypeDoc