1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-16 17:45:20 +00:00
qb64/internal/help/_glrawArrays.md

56 lines
2.9 KiB
Markdown

**_glDrawArrays:** render primitives from array data
## Syntax
> : SUB _glDrawArrays (BYVAL mode AS _UNSIGNED LONG, BYVAL first AS LONG, BYVAL count AS LONG)
> : void **_glDrawArrays**(GLenum mode, GLint first, GLsizei count);
; mode
> Specifies what kind of primitives to render. Symbolic constants [_GL_POINTS](_GL_POINTS), [_GL_LINE_STRIP](_GL_LINE_STRIP), [_GL_LINE_LOOP](_GL_LINE_LOOP), [_GL_LINES](_GL_LINES), [_GL_LINE_STRIP_ADJACENCY](_GL_LINE_STRIP_ADJACENCY), [_GL_LINES_ADJACENCY](_GL_LINES_ADJACENCY), [_GL_TRIANGLE_STRIP](_GL_TRIANGLE_STRIP), [_GL_TRIANGLE_FAN](_GL_TRIANGLE_FAN), [_GL_TRIANGLES](_GL_TRIANGLES), [_GL_TRIANGLE_STRIP_ADJACENCY](_GL_TRIANGLE_STRIP_ADJACENCY), [_GL_TRIANGLES_ADJACENCY](_GL_TRIANGLES_ADJACENCY) and [_GL_PATCHES](_GL_PATCHES) 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, 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.
## Notes
[_GL_LINE_STRIP_ADJACENCY](_GL_LINE_STRIP_ADJACENCY), [_GL_LINES_ADJACENCY](_GL_LINES_ADJACENCY), [_GL_TRIANGLE_STRIP_ADJACENCY](_GL_TRIANGLE_STRIP_ADJACENCY) and [_GL_TRIANGLES_ADJACENCY](_GL_TRIANGLES_ADJACENCY) are available only if the GL version is 3.2 or greater.
## Error(s)
[_GL_INVALID_ENUM](_GL_INVALID_ENUM) is generated if mode is not an accepted value.
[_GL_INVALID_VALUE](_GL_INVALID_VALUE) is generated if count is negative.
[_GL_INVALID_OPERATION](_GL_INVALID_OPERATION) is generated if a non-zero buffer object name is bound to an enabled array and the buffer object's data store is currently mapped.
[_GL_INVALID_OPERATION](_GL_INVALID_OPERATION) is generated if a geometry shader is active and mode is incompatible with the input primitive type of the geometry shader in the currently installed program object.
## See Also
[_GL](_GL)
[_glBindVertexArray](_glBindVertexArray), [_glDrawArraysIndirect](_glDrawArraysIndirect), [_glDrawArraysInstanced](_glDrawArraysInstanced), [_glDrawArraysInstancedBaseInstance](_glDrawArraysInstancedBaseInstance), [_glMultiDrawArrays](_glMultiDrawArrays), [_glMultiDrawArraysIndirect](_glMultiDrawArraysIndirect)