glDrawBuffers: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Artikel erstellt)
(kein Unterschied)

Version vom 3. Juni 2007, 16:32 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 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 auxiliary Puffer i geschrieben.

Mit Ausnahme von GL_NONE sollte keine Konstante mehr als einmal vorkommen.

Hinweise

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

GL_AUXi ist immer GL_AUX0 + i.

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 [[glGet#GL_DRAW_BUFFERSi|GL_DRAW_BUFFERSi] wobei i den Zeichenpuffer angibt welcher angefordert werden soll.

Siehe auch

glBlendFunc, glColorMask, glDrawBuffer, glIndexMask, glLogicOp, glReadBuffer