glDrawArrays: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (=glDrawArrays=) |
K (→Siehe auch) |
||
(14 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=glDrawArrays= | =glDrawArrays= | ||
− | '''glDrawArrays''' - Erlaubt es mehrere [[ | + | '''glDrawArrays''' - Erlaubt es, mehrere [[Primitive]] auf einmal zu zeichnen. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | + | procedure '''glDrawArrays'''(''mode'': TGLenum; ''first'': TGLint; ''count'': TGLsizei); | |
+ | |||
+ | |||
− | |||
== Parameter == | == Parameter == | ||
Zeile 15: | Zeile 17: | ||
! Beschreibung | ! Beschreibung | ||
|- | |- | ||
− | + | | ''mode'' | |
− | | | + | | Bestimmt, welche Primitiven anhand der Vertexe gezeichnet werden sollen.<br> Es können die gleichen Werte wie bei [[glBegin]] übergeben werden:<br>'''GL_POINTS''', '''GL_LINE_STRIP''', '''GL_LINE_LOOP''', '''GL_LINES''', '''GL_TRIANGLE_STRIP''', '''GL_TRIANGLE_FAN''', '''GL_TRIANGLES''', '''GL_QUAD_STRIP''', '''GL_QUADS''', und '''GL_POLYGON'''. |
|- | |- | ||
− | + | | ''first'' | |
− | | | + | | Definiert den Startindex der aktivierten Arrays. |
|- | |- | ||
− | + | | ''count'' | |
− | | | + | | Definiert die Anzahl der Vertices, die gerendert werden sollen. |
|} | |} | ||
− | |||
== Beschreibung == | == Beschreibung == | ||
+ | '''glDrawArrays''' definiert mehrere geometrische Primitiven mit sehr wenig Unterfunktionsaufrufen. Anstatt eine OpenGL-Funktion aufzurufen, um jedes einzelne [[glVertex|Vertex]], [[glEdgeFlag|Kantenflag]], jede [[glColor|Farbe]], [[glSecondaryColor|Zweitfarbe]], [[glNormal|Normale]], [[glTexCoord|Textur-]] und [[glFogCoord|Nebelkoordinate]] zu übergeben, kann man getrennte Vertex-, Normalen- und Farb-Arrays vordefinieren und diese benutzen, um eine Folge an Primitiven mit einem einzigen Aufruf von '''glDrawArrays''' zu konstruieren. | ||
+ | |||
+ | Wenn '''glDrawArrays''' aufgerufen wird, benutzt die Funktion ''count'' aufeinanderfolgende Elemente von jedem aktiviertem Array, um eine Folge an geometrischen Primitiven zu konstruieren, beginnend mit Element ''first''. ''mode'' definiert, welche Art von Primitiven konstruiert wird und wie die Arrayelemente diese Primitiven konstruieren. Falls '''GL_VERTEX_ARRAY''' nicht aktiviert ist, werden keine geometrischen Primitiven erzeugt. | ||
+ | |||
+ | Vertex-Attribute, die von '''glDrawArrays''' verändert werden, haben einen undefinierten Wert, nachdem der Aufruf von '''glDrawArrays''' beendet ist. Ist z.B. '''GL_COLOR_ARRAY''' aktiviert, ist der Wert der aktuellen Farbe undefiniert, nachdem '''glDrawArrays''' ausgeführt wird. Attribute, die nicht verändert werden, bleiben wohldefiniert. | ||
+ | |||
+ | |||
+ | Der Effekt von '''glDrawArrays''' ist derselbe wie : | ||
+ | glBegin(''mode''); | ||
+ | FOR i := 0 TO ''count'' - 1 DO BEGIN | ||
+ | [[glArrayElement]](''first'' + i); | ||
+ | END; | ||
+ | glEnd(); | ||
+ | |||
− | |||
− | |||
− | |||
== Hinweise == | == Hinweise == | ||
+ | '''glDrawArrays''' ist nur ab GL Version 1.1 oder höher verfügbar. | ||
+ | |||
+ | Der Befehl '''glDrawArrays''' kann in [[Displaylisten]] verwendet werden. Dadurch werden alle Daten aus den Arrays in die Liste übernommen. | ||
+ | |||
+ | == Fehlermeldungen == | ||
+ | '''GL_INVALID_VALUE''' wird generiert, wenn ''count'' einen negativen Wert hatte. | ||
− | + | '''GL_INVALID_ENUM''' wird generiert, wenn ''mode'' einen ungültigen Wert hatte. | |
+ | |||
+ | '''GL_INVALID_OPERATION''' wird generiert, falls '''glDrawArrays''' zwischen [[glBegin]] und dem dazugehörigen [[glEnd]] aufgerufen wurde. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Siehe auch == | == Siehe auch == | ||
− | [[glArrayElement]], [[glBegin|glBegin/glEnd]] [[glColorPointer]], [[glEdgeFlagPointer]], | + | [[glArrayElement]], [[glEnableClientState]], [[glDisableClientState]], [[glBegin|glBegin / glEnd]], [[glColorPointer]], [[glDrawElements]], [[glDrawRangeElements]], [[glEdgeFlagPointer]], [[glFogCoordPointer]], [[glGetPointerv]], [[glGetString]], [[glIndexPointer]], [[glInterleavedArrays]], [[glMultiDrawArrays]], [[glMultiDrawElements]], [[glNormalPointer]], [[glSecondaryColorPointer]], [[glTexCoordPointer]], [[glVertexPointer]] |
+ | |||
+ | [[Kategorie:GL|DrawArrays]] | ||
+ | [[Kategorie:GL1.1|DrawArrays]] | ||
+ | [[Kategorie:GL3|DrawArrays]] |
Aktuelle Version vom 21. Februar 2014, 17:57 Uhr
Inhaltsverzeichnis
glDrawArrays
glDrawArrays - Erlaubt es, mehrere Primitive auf einmal zu zeichnen.
Delphi-Spezifikation
procedure glDrawArrays(mode: TGLenum; first: TGLint; count: TGLsizei);
Parameter
Parameter | Beschreibung |
---|---|
mode | Bestimmt, welche Primitiven anhand der Vertexe gezeichnet werden sollen. Es können die gleichen Werte wie bei glBegin übergeben werden: GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, und GL_POLYGON. |
first | Definiert den Startindex der aktivierten Arrays. |
count | Definiert die Anzahl der Vertices, die gerendert werden sollen. |
Beschreibung
glDrawArrays definiert mehrere geometrische Primitiven mit sehr wenig Unterfunktionsaufrufen. Anstatt eine OpenGL-Funktion aufzurufen, um jedes einzelne Vertex, Kantenflag, jede Farbe, Zweitfarbe, Normale, Textur- und Nebelkoordinate zu übergeben, kann man getrennte Vertex-, Normalen- und Farb-Arrays vordefinieren und diese benutzen, um eine Folge an Primitiven mit einem einzigen Aufruf von glDrawArrays zu konstruieren.
Wenn glDrawArrays aufgerufen wird, benutzt die Funktion count aufeinanderfolgende Elemente von jedem aktiviertem Array, um eine Folge an geometrischen Primitiven zu konstruieren, beginnend mit Element first. mode definiert, welche Art von Primitiven konstruiert wird und wie die Arrayelemente diese Primitiven konstruieren. Falls GL_VERTEX_ARRAY nicht aktiviert ist, werden keine geometrischen Primitiven erzeugt.
Vertex-Attribute, die von glDrawArrays verändert werden, haben einen undefinierten Wert, nachdem der Aufruf von glDrawArrays beendet ist. Ist z.B. GL_COLOR_ARRAY aktiviert, ist der Wert der aktuellen Farbe undefiniert, nachdem glDrawArrays ausgeführt wird. Attribute, die nicht verändert werden, bleiben wohldefiniert.
Der Effekt von glDrawArrays ist derselbe wie :
glBegin(mode); FOR i := 0 TO count - 1 DO BEGIN glArrayElement(first + i); END; glEnd();
Hinweise
glDrawArrays ist nur ab GL Version 1.1 oder höher verfügbar.
Der Befehl glDrawArrays kann in Displaylisten verwendet werden. Dadurch werden alle Daten aus den Arrays in die Liste übernommen.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn count einen negativen Wert hatte.
GL_INVALID_ENUM wird generiert, wenn mode einen ungültigen Wert hatte.
GL_INVALID_OPERATION wird generiert, falls glDrawArrays zwischen glBegin und dem dazugehörigen glEnd aufgerufen wurde.
Siehe auch
glArrayElement, glEnableClientState, glDisableClientState, glBegin / glEnd, glColorPointer, glDrawElements, glDrawRangeElements, glEdgeFlagPointer, glFogCoordPointer, glGetPointerv, glGetString, glIndexPointer, glInterleavedArrays, glMultiDrawArrays, glMultiDrawElements, glNormalPointer, glSecondaryColorPointer, glTexCoordPointer, glVertexPointer