glDrawBuffers: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) (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); | ||
− | |||
== 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, 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 == | == 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 [[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 ''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. | ||
+ | |||
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, 19:23 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, 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