1991-2006 Silicon Graphics, Inc.
glDrawArrays 3G
glDrawArrays render primitives from array data

## C Specification

void `glDrawArrays` GLenum mode GLint first GLsizei count

## Parameters

mode

  Specifies what kind of primitives to render. Symbolic constants `GL_POINTS`, `GL_LINE_STRIP`, `GL_LINE_LOOP`, `GL_LINES`, `GL_TRIANGLE_STRIP`, `GL_TRIANGLE_FAN`, and `GL_TRIANGLES` are accepted.

first

  Specifies the starting index in the enabled arrays.

count

  Specifies the number of indices to be rendered.

## Description

`glDrawArrays` specifies multiple geometric primitives with very few subroutine calls. Instead of calling a GL procedure to pass each individual vertex attribute, you can use glVertexAttribPointer to 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.

To enable and disable a generic vertex attribute array, call glEnableVertexAttribArray and glDisableVertexAttribArray.

## Notes

If the current program object, as set by glUseProgram, is invalid, rendering results are undefined. However, no error is generated for this case.

## Errors

`GL_INVALID_ENUM` is generated if mode is not an accepted value.

`GL_INVALID_VALUE` is generated if count is negative.

`GL_INVALID_FRAMEBUFFER_OPERATION` is generated if the currently bound framebuffer is not framebuffer complete (i.e. the return value from glCheckFramebufferStatus is not `GL_FRAMEBUFFER_COMPLETE`).

## See Also

glCheckFramebufferStatus, glDisableVertexAttribArray, glDrawElements, glEnableVertexAttribArray, glUseProgram, glVertexAttribPointer

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.