glDrawBuffers: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Kategorisierung unter GL2.0; kleinere Tippfehler und Probleme mit Wikisyntax behoben.)
K (Kategorie GL3 hinzugefügt)
Zeile 88: Zeile 88:
 
[[Kategorie:GL|DrawBuffers]]
 
[[Kategorie:GL|DrawBuffers]]
 
[[Kategorie:GL2.0|DrawBuffers]]
 
[[Kategorie:GL2.0|DrawBuffers]]
 +
[[Kategorie:GL3]]

Version vom 15. Juni 2011, 21:09 Uhr

glDrawBuffers

Name

glDrawBuffers - Legt eine Reihe von Puffern fest, in die gezeichnet wird.


Delphi-Spezifikation

procedure glDrawBuffers(n: GLsizei; const bufs: PGLenum);


Parameter

n Gibt die Anzahl an Puffern in bufs an.
bufs Ein Pointer auf einen Array von symbolischen Konstanten, welche für die Puffer steht in welche gezeichnet werden soll.


Beschreibung

glDrawBuffers definiert einen Array von Puffern, in die Fragment Farben und Daten geschrieben wird. Ist kein Fragment Shader aktiv, dann genierten Render Operationen nur ein Farb Fragment pro Fragment, welches dann in jeden einzellen angegebenen Puffer geschreiben wird. Ist ein Fragment Shader aktiv, der gl_FragColor eine Farbe zuweist, so wird diese in jeden einzelnen angegebenen geschrieben. Ist ein Fragment Shader aktiv, der dem Array gl_FragData[] Werte zuweist, dann wird der Wert von gl_FragData[i] in den iten Puffer geschrieben.

Die symbolischen Konstanten in dem Array, von denen mit Ausnahme von GL_NONE keine mehr als einmal vorkommen sollte, können folgende sein:

GL_NONE

Die Fragmentfarbe / -wert wird in keinen Farbpuffer geschrieben.

GL_FRONT_LEFT

Die Fragmentfarbe / -wert wird in den vorderen linken Farbpuffer geschrieben.

GL_FRONT_RIGHT

Die Fragmentfarbe / -wert wird in den vorderen rechten Farbpuffer geschrieben.

GL_BACK_LEFT

Die Fragmentfarbe / -wert wird in den hinteren linken Farbpuffer geschrieben.

GL_BACK_RIGHT

Die Fragmentfarbe / -wert wird in den hinteren rechten Farbpuffer geschrieben.

GL_AUXi

Die Fragmentfarbe / -wert wird in den Hilfspuffer i geschrieben.


Hinweise

glDrawBuffers ist nur verfügbar, wenn die OpenGL-Version 2.0 oder höher ist.

Die Maximalanzahl unterstützter Zeichenpuffer ist implementationsabhängig und kann durch einen Aufruf von glGet mit dem Token GL_MAX_DRAW_BUFFERS bestimmt werden.

GL_AUXi ist immer GL_AUX0 + i. Die Anzahl der verfügbaren Hilfspuffer kann durch einen Aufruf von glGet mit dem Token GL_AUX_BUFFERS erfragt werden.

Die symbolischen Konstanten GL_FRONT, GL_BACK, GL_LEFT, GL_RIGHT, und GL_FRONT_AND_BACK sind nicht erlaubt in bufs, da sie für mehere Puffer stehen können.

Wenn ein Shader weder nach gl_FragColor noch gl_FragData schreibt, so ist die Farbe der Frarb Fragmente undefiniert.

Es ist mit gl_FragData möglich, unterschiedliche Werte in verschiedene Puffer zu schreiben.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn einer der Werte im Array bufs kein akzeptierter Wert ist.

GL_INVALID_ENUM wird generiert, wenn n kleiner als 0 ist.

GL_INVALID_OPERATION wird generiert, wenn eine Konstante außer GL_NONE mehr als einmal im Array bufs vorkommt.

GL_INVALID_OPERATION wird generiert, wenn einer der Puffer in bufs (außer GL_NONE) für einen Puffer steht, der im aktuellen GL Context nicht existiert.

GL_INVALID_VALUE wird generiert, wenn n größer ist als der Wert, den man mit GL_MAX_DRAW_BUFFERS erhält.

GL_INVALID_OPERATION wird generiert, wenn glDrawBuffers innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGet mit Token GL_MAX_DRAW_BUFFERS

glGet mit Token GL_DRAW_BUFFERSi, wobei i den Zeichenpuffer angibt, welcher angefordert werden soll.


Siehe auch

glBlendFunc, glColorMask, glDrawBuffer, glIndexMask, glLogicOp, glReadBuffer