glDrawRangeElements: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Kategorisierung unter GL1.2)
K (Siehe auch)
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 59: Zeile 59:
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
Es ist ein Fehler für Indizes ausserhalb des Bereiches [''start'', ''_end''] zu liegen, aber Implementationen müssen diesen Fall nicht überprüfen. Solche Indizes verursachen implementationsabhängiges Verhalten.
+
Es ist ein Fehler für Indizes außerhalb des Bereiches [''start'', ''_end''] zu liegen, aber Implementationen müssen diesen Fall nicht überprüfen. Solche Indizes verursachen implementationsabhängiges Verhalten.
  
 
'''GL_INVALID_ENUM''' wird generiert, wenn ''mode'' keinen gültigen Wert enthält.
 
'''GL_INVALID_ENUM''' wird generiert, wenn ''mode'' keinen gültigen Wert enthält.
Zeile 68: Zeile 68:
  
 
'''GL_INVALID_VALUE''' wird generiert, wenn ''_end'' < ''begin'' ist.
 
'''GL_INVALID_VALUE''' wird generiert, wenn ''_end'' < ''begin'' ist.
 
 
  
 
== Zugehörige Wertrückgaben ==
 
== Zugehörige Wertrückgaben ==
Zeile 83: Zeile 81:
 
[[Kategorie:GL|DrawRangeElements]]
 
[[Kategorie:GL|DrawRangeElements]]
 
[[Kategorie:GL1.2|DrawRangeElements]]
 
[[Kategorie:GL1.2|DrawRangeElements]]
 +
[[Kategorie:GL3|DrawRangeElements]]

Aktuelle Version vom 21. Februar 2014, 17:58 Uhr

glDrawRangeElements

Name

glDrawRangeElements - Rendert Primitiven aus einem Daten-Array mithilfe eines Index-Arrays.


Delphi-Spezifikation

procedure glDrawRangeElements(mode: GLenum; start: TGLuint;
                              _end: TGLuint; count: GLSizei;
                              _type: GLenum; const indices: PGLvoid); 


Parameter

mode Gibt an, welcher Primitiven-Typ gerendert werden soll. Hier sind die symbolische Konstanten 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 erlaubt.
start Kleinster Array-Index in indices.
_end Grösster Array-Index in indices.
count Anzahl der zu rendernden Elemente.
type Gibt den Typ der Werte in indices an. Muss entweder GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT oder GL_UNSIGNED_INT sein.
indices Zeiger auf Speicher, in dem die Indizes liegen.


Beschreibung

glDrawRangeElements ist eine eingeschränkte Form von glDrawElements. mode, start, _end und count stimmen mit den entsprechenden Argumenten von glDrawElements überein, mit der zusätzlichen Bedingung, dass alle Werte im Array indices im Bereich [start, _end] liegen müssen.

OpenGL-Implementationen kennzeichnen empfohlene maximale Mengen an Vertex- und Indexdaten, welche durch den Aufruf von glGet mit dem Argument GL_MAX_ELEMENTS_VERTICES und GL_MAX_ELEMENTS_INDICES abgefragt werden können. Falls _end - start + 1 grösser als der Wert von GL_MAX_ELEMENTS_VERTICES oder falls count grösser als der Wert von GL_MAX_ELEMENTS_INDICES ist, könnte der Aufruf unter reduzierter Performance arbeiten. Es ist nicht nötig, dass alle Vertices im Bereich [start, _end]] referenziert werden müssen. Die Implementation könnte jedoch ungenutzte Vertices teilweise verarbeiten, so dass die Performance im Vergleich zu einer optimalen Indexmenge reduziert wird.

Wenn glDrawRangeElements aufgerufen wird, benutzt der Befehl count sequentielle Elemente eines aktivierten Arrays, beginnend bei start um eine Folge an geometrischen Primitiven zu konstruieren. mode gibt an, welche Art von Primitiven konstruiert wird und wie die Array-Elemente diese Primitiven konstruieren. Wenn mehr als ein Array aktiviert ist, wird jedes einzelne davon benutzt. Falls GL_VERTEX_ARRAY nicht aktiviert ist, werden keine geometrischen Primitiven konstruiert.

Vertex-Attribute, die durch glDrawRangeElements verändert werden, haben einen undefinierten Wert nachdem glDrawRangeElements beendet ist. Z.B., falls GL_COLOR_ARRAY aktiviert ist, ist der Wert der aktuell gesetzten Farbe undefiniert nachdem glDrawRangeElements ausgeführt wurde. Attribute, die nicht verändert wurden, behalten ihre ursprünglichen Werte.


Hinweise

glDrawRangeElements ist erst ab GL Version 1.2 oder höher nutzbar.

Ersetzt die Extension GL_EXT_draw_range_elements.

glDrawRangeElements wird in Displaylisten eingebunden. Falls glDrawRangeElements in eine Displayliste hineinkommt, kommen auch die zugehörigen Array-Daten (festgelegt durch die Arrayzeiger und -aktivierungen) in die Displayliste mithinein. Da die Arrayzeiger und -aktivierungen clientseitige Zustände sind, beeinflussen ihre Werte Displaylisten nur, wenn die Listen erzeugt, jedoch nicht wenn die Listen ausgeführt werden.


Fehlermeldungen

Es ist ein Fehler für Indizes außerhalb des Bereiches [start, _end] zu liegen, aber Implementationen müssen diesen Fall nicht überprüfen. Solche Indizes verursachen implementationsabhängiges Verhalten.

GL_INVALID_ENUM wird generiert, wenn mode keinen gültigen Wert enthält.

GL_INVALID_VALUE wird generiert, wenn count negativ ist.

GL_INVALID_OPERATION wird generiert, wenn glDrawRangeElements in einem glBegin-glEnd-Block aufgerufen wird.

GL_INVALID_VALUE wird generiert, wenn _end < begin ist.

Zugehörige Wertrückgaben

glGet mit Token GL_MAX_ELEMENTS_VERTICES

glGet mit Token GL_MAX_ELEMENTS_INDICES


Siehe auch

glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glFogCoordPointer, glGetPointerv, glIndexPointer, glInterleavedArrays, glMultiDrawArrays, glMultiDrawElements, glNormalPointer, glSecondaryColorPointer, glTexCoordPointer, glVertexPointer