glDrawBuffers: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) (Artikel erstellt) |
(kein Unterschied)
|
Version vom 3. Juni 2007, 16:32 Uhr
Inhaltsverzeichnis
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