glDrawBuffers: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Artikel erstellt)
 
K (Kategorisierung unter GL2.0; kleinere Tippfehler und Probleme mit Wikisyntax behoben.)
Zeile 3: Zeile 3:
  
 
== Name ==
 
== Name ==
'''glDrawBuffers''' - Legt eine Reihe von Puffern fest in die gezeichnet wird.
+
'''glDrawBuffers''' - Legt eine Reihe von Puffern fest, in die gezeichnet wird.
  
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 +
procedure '''glDrawBuffers'''(''n'': GLsizei; const ''bufs'': PGLenum);
  
procedure '''glDrawBuffers'''(''n'': GLsizei; const ''bufs'': PGLenum)
 
  
  
 
== Parameter ==
 
== Parameter ==
 
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''n''  
 
! ''n''  
Zeile 21: Zeile 20:
 
|}
 
|}
  
== 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[<nowiki>[[</nowiki> Werte  zuweist, dann wird der Wert von gl_FragData<nowiki>[</nowiki>'''i'''<nowiki>[</nowiki> in den' ''i'''ten Puffer  geschrieben.
 
  
Die symbolischen Konstanten in dem Array können folgende sein:
 
  
;GL_NONE: Die Fragmentfarbe / -wert wird in keinen Farbpuffer geschrieben.
+
== 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<nowiki>[]</nowiki> Werte  zuweist, dann wird der Wert von gl_FragData<nowiki>[</nowiki>'''i'''<nowiki>]</nowiki> in den '''i'''ten 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_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_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_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_BACK_RIGHT:Die Fragmentfarbe / -wert wird in den hinteren  rechten Farbpuffer geschrieben.
+
=== GL_AUXi ===
 +
: Die Fragmentfarbe / -wert wird in den Hilfspuffer i 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 ==
 
== Hinweise ==
 +
'''glDrawBuffers''' ist nur verfügbar, wenn die OpenGL-Version 2.0 oder höher ist.
  
'''glDrawBuffers''' ist für 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 [[glGet#GL_MAX_DRAW_BUFFERS|GL_MAX_DRAW_BUFFERS]] bestimmt werden.
  
'''GL_AUXi''' ist immer GL_AUX0 + i.
+
'''GL_AUXi''' ist immer GL_AUX0 + i. Die Anzahl der verfügbaren Hilfspuffer kann durch einen Aufruf von [[glGet]] mit dem Token [[glGet#GL_AUX_BUFFERS|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.
+
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.
 
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.
+
Es ist mit gl_FragData möglich, unterschiedliche Werte in verschiedene Puffer zu schreiben.
  
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
* '''GL_INVALID_ENUM''' wird generiert wenn einer der Werte im Array bufs kein akzeptierter Wert ist.
+
'''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_ENUM''' wird generiert, wenn ''n'' kleiner als 0 ist.
* '''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  eine Konstante außer '''GL_NONE''' mehr als einmal im Array ''bufs'' vorkommt.
* '''GL_INVALID_OPERATION''' wird generiert wenn glDrawBuffers innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
+
 
 +
'''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.  
 +
 
  
  
Zeile 65: Zeile 79:
 
[[glGet]] mit Token [[glGet#GL_MAX_DRAW_BUFFERS|GL_MAX_DRAW_BUFFERS]]
 
[[glGet]] mit Token [[glGet#GL_MAX_DRAW_BUFFERS|GL_MAX_DRAW_BUFFERS]]
  
[[glGet]] mit Token [[glGet#GL_DRAW_BUFFERSi|GL_DRAW_BUFFERSi] wobei i den Zeichenpuffer angibt welcher angefordert werden soll.
+
[[glGet]] mit Token [[glGet#GL_DRAW_BUFFERSi|GL_DRAW_BUFFERSi]], wobei i den Zeichenpuffer angibt, welcher angefordert werden soll.
 +
 
 +
 
  
 
== Siehe auch ==
 
== Siehe auch ==
Zeile 71: Zeile 87:
  
 
[[Kategorie:GL|DrawBuffers]]
 
[[Kategorie:GL|DrawBuffers]]
 +
[[Kategorie:GL2.0|DrawBuffers]]

Version vom 3. Juni 2008, 20:23 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