GlDrawArrays: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
(Created page with "'''_glDrawArrays:''' render primitives from array data {{PageSyntax}} :: SUB _glDrawArrays (BYVAL mode AS _UNSIGNED LONG, BYVAL first AS LONG, BYVAL count AS LONG) :: void '''_glDrawArrays'''(GLenum {{Parameter|mode}}, GLint {{Parameter|first}}, GLsizei {{Parameter|count}}); ; mode : Specifies what kind of primitives to render. Symbolic constants {{KW|_GL_POINTS}}, {{KW|_GL_LINE_STRIP}}, {{KW|_GL_LINE_LOOP}}, {{KW|_GL_LINES}}, {{KW|_GL_LINE_STRIP_ADJACENCY}}, {{KW...")
 
No edit summary
Line 1: Line 1:
'''_glDrawArrays:''' render primitives from array data
{{DISPLAYTITLE:_glDrawArrays}}
The '''_glDrawArrays''' statement specifies multiple primitives to render.




{{PageSyntax}}
{{PageSyntax}}
: '''_glDrawArrays''' GLenum {{Parameter|mode}}, GLint {{Parameter|first}}, GLsizei {{Parameter|count}}


::  SUB _glDrawArrays (BYVAL mode AS _UNSIGNED LONG, BYVAL first AS LONG, BYVAL count AS LONG)
::  void '''_glDrawArrays'''(GLenum {{Parameter|mode}}, GLint {{Parameter|first}}, GLsizei {{Parameter|count}});


 
{{PageParameters}}
; mode
* OpenGL is using its own set of variable types to describe its command parameters.
: Specifies what kind of primitives to render. Symbolic constants {{KW|_GL_POINTS}}, {{KW|_GL_LINE_STRIP}}, {{KW|_GL_LINE_LOOP}}, {{KW|_GL_LINES}}, {{KW|_GL_LINE_STRIP_ADJACENCY}}, {{KW|_GL_LINES_ADJACENCY}}, {{KW|_GL_TRIANGLE_STRIP}}, {{KW|_GL_TRIANGLE_FAN}}, {{KW|_GL_TRIANGLES}}, {{KW|_GL_TRIANGLE_STRIP_ADJACENCY}}, {{KW|_GL_TRIANGLES_ADJACENCY}} and {{KW|_GL_PATCHES}} are accepted.
* Use the following table to find the respective QB64 [[Variable Types]].
; first
{{TextStart}}
: Specifies the starting index in the enabled arrays.
  '''OpenGL'''    |    '''C/C++'''        |        '''QB64'''
; count
------------+------------------+----------------------
: Specifies the number of indices to be rendered.
GLenum      |  unsigned int    |  [[_UNSIGNED]] [[LONG]]
GLboolean  |  unsigned char  |  [[_UNSIGNED]] [[_BYTE]]
GLbitfield  |  unsigned int    |  [[_UNSIGNED]] [[LONG]]
GLbyte      |  signed char    |  [[_BYTE]]
GLshort    |  short          |  [[INTEGER]]
GLint      |  int            |  [[LONG]]
GLsizei    |  int            | [[LONG]]
GLubyte    | unsigned char  | [[_UNSIGNED]] [[_BYTE]]
GLushort    | unsigned short  | [[_UNSIGNED]] [[INTEGER]]
GLuint      | unsigned int    | [[_UNSIGNED]] [[LONG]]
GLfloat    | float          | [[SINGLE]]
GLclampf    | float          | [[SINGLE]]
GLdouble    |  double          |  [[DOUBLE]]
GLclampd    |  double          |  [[DOUBLE]]
GLvoid      |  void            |  no parameters used
{{TextEnd}}




{{PageDescription}}
{{PageDescription}}
 
* OpenGL's documentation is available in several places, so we won't reproduce it here for another time.
'''_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'''.
* The full description for this command can be found at [https://docs.microsoft.com/en-us/windows/win32/opengl/gldrawarrays Microsoft Docs] and is also valid for QB64 usage.
 
When '''_glDrawArrays''' is called, it uses {{Parameter|count}} sequential elements from each enabled array to construct a sequence of geometric primitives, beginning with element {{Parameter|first}}. {{Parameter|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.
 
 
{{PageNotes}}
 
{{KW|_GL_LINE_STRIP_ADJACENCY}}, {{KW|_GL_LINES_ADJACENCY}}, {{KW|_GL_TRIANGLE_STRIP_ADJACENCY}} and {{KW|_GL_TRIANGLES_ADJACENCY}} are available only if the GL version is 3.2 or greater.
 
 
{{PageErrors}}
 
{{KW|_GL_INVALID_ENUM}} is generated if {{Parameter|mode}} is not an accepted value.
 
{{KW|_GL_INVALID_VALUE}} is generated if {{Parameter|count}} is negative.
 
{{KW|_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.
 
{{KW|_GL_INVALID_OPERATION}} is generated if a geometry shader is active and {{Parameter|mode}} is incompatible with the input primitive type of the geometry shader in the currently installed program object.




{{PageSeeAlso}}
{{PageSeeAlso}}
* [[_GL|SUB _GL]]


[[_GL|SUB _GL]]
{{KW|_glBindVertexArray}}, {{KW|_glDrawArraysIndirect}}, {{KW|_glDrawArraysInstanced}}, {{KW|_glDrawArraysInstancedBaseInstance}}, {{KW|_glMultiDrawArrays}}, {{KW|_glMultiDrawArraysIndirect}}


{{PageNavigation}}


{{PageCopyright}}
[[Category:Final]]

Revision as of 17:20, 14 July 2022

The _glDrawArrays statement specifies multiple primitives to render.


Syntax

_glDrawArrays GLenum mode, GLint first, GLsizei count


Parameters

  • OpenGL is using its own set of variable types to describe its command parameters.
  • Use the following table to find the respective QB64 Variable Types.
  OpenGL     |     C/C++        |        QB64
 ------------+------------------+----------------------
 GLenum      |  unsigned int    |  _UNSIGNED LONG
 GLboolean   |  unsigned char   |  _UNSIGNED _BYTE
 GLbitfield  |  unsigned int    |  _UNSIGNED LONG
 GLbyte      |  signed char     |  _BYTE
 GLshort     |  short           |  INTEGER
 GLint       |  int             |  LONG
 GLsizei     |  int             |  LONG
 GLubyte     |  unsigned char   |  _UNSIGNED _BYTE
 GLushort    |  unsigned short  |  _UNSIGNED INTEGER
 GLuint      |  unsigned int    |  _UNSIGNED LONG
 GLfloat     |  float           |  SINGLE
 GLclampf    |  float           |  SINGLE
 GLdouble    |  double          |  DOUBLE
 GLclampd    |  double          |  DOUBLE
 GLvoid      |  void            |  no parameters used


Description

  • OpenGL's documentation is available in several places, so we won't reproduce it here for another time.
  • The full description for this command can be found at Microsoft Docs and is also valid for QB64 usage.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link