glStencilOp: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Beschreibung) |
Flash (Diskussion | Beiträge) (Bitte keine Informationen weglassen (auch wens unwichtig erscheint)) |
||
Zeile 1: | Zeile 1: | ||
+ | {{Unvollständig}} | ||
= glStencilOp = | = glStencilOp = | ||
Zeile 31: | Zeile 32: | ||
== Beschreibung == | == Beschreibung == | ||
− | Jeder Pixel wird der mit [[glStencilFunc]] festgelegten Test unterzogen. Welche Auswirkung dieser Test nun auf den [[Schablonenpuffer]](stencil buffer) selbst hat, wird mit '''glStencilOp''' festgelegt. Auf diese weise ist es möglich durch das Zeichnen von Primitiven den [[Schablonenpuffer]] zu verändern. Der Inhalt [[Schablonenpuffer]] kann anschließen als eine Art Schablone verwendet werden um Teile der Zeichenfläche vom Zeichnen auszunehmen. Diese Technik wird vorallem bei Rendervorgängen mit mehren Durchgängen | + | Jeder Pixel wird der mit [[glStencilFunc]] festgelegten Test unterzogen. Welche Auswirkung dieser Test nun auf den [[Schablonenpuffer]](stencil buffer) selbst hat, wird mit '''glStencilOp''' festgelegt. Auf diese weise ist es möglich durch das Zeichnen von Primitiven den [[Schablonenpuffer]] zu verändern. Der Inhalt [[Schablonenpuffer]] kann anschließen als eine Art Schablone verwendet werden um Teile der Zeichenfläche vom Zeichnen auszunehmen. Diese Technik wird vorallem bei Rendervorgängen mit mehren Durchgängen genutzt um Spezial-Effekte wie Spiegelungen, [[decals]] und [[outlining]] zu erzeugen. |
;'''GL_KEEP''' :Keine Veränderung | ;'''GL_KEEP''' :Keine Veränderung | ||
Zeile 46: | Zeile 47: | ||
<br> | <br> | ||
− | + | Die Werte des Schablonenpuffers werden als Vorzeichenlose Ganzzahl behandelt. Wenn die Werte inkrementiert(erhöht) oder dekrementiert(verringert) werden, werden Sie anschließend auf das Intervall [0,max] umgerechnet, wobei '''max = (2^[[glGet#GL_STENCIL_BITS|GL_STENCIL_BITS]]) -1''' ist. | |
− | |||
== Hinweise == | == Hinweise == | ||
+ | Beachten Sie, dass ''zfail'' ignoriert wird, wenn kein Tiefenpuffer existiert oder dieser nicht aktiviert ist. | ||
+ | <b><i>In these cases, fail and zpass specify stencil action when the stencil test fails and passes, respectively.</i></b> | ||
− | Falls kein [[ | + | Falls kein [[Schablonenpuffer]] existiert(etwa weil das Pixel Format keinen enthält), ist der Stenciltest immer erfolgreich unabhängig von den Einstellungen durch '''glStencilOp'''. |
<br> | <br> | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
+ | '''GL_INVALID_ENUM''' wird generiert wenn einer der Parameter (''fail'', ''zfail'' und ''zpass'') einen anderen Wert als die 6 Konstanten enthält. | ||
− | '''GL_INVALID_OPERATION''' wird generiert wenn | + | '''GL_INVALID_OPERATION''' wird generiert wenn '''glStecilOp''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. |
− | |||
− | |||
− | |||
− | |||
+ | <br> | ||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
*[[glGet]] mit Token [[glGet#GL_STENCIL_FAIL|GL_STENCIL_FAIL]] | *[[glGet]] mit Token [[glGet#GL_STENCIL_FAIL|GL_STENCIL_FAIL]] |
Version vom 21. September 2004, 21:34 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
glStencilOp
Name
glStencilOp - Legt fest was beim Stencil Test passiert.
Delphi-Spezifikation
procedure glStencilOp (fail,zfail,zpass: TGLenum);
Parameter
Die Parameter können folgende Konstanten enthalten:GL_KEEP, GL_ZERO, GL_REPLACE, GL_INCR, GL_DECR, undGL_INVERT.
Der Standartwert bei allen Parametern ist GL_KEEP.
fail | Legt fest was gemacht wird wenn der Stencil Test fehlschlägt. |
---|---|
zfail | Legt fest was passiert wenn der Stencil Test erfolgreich ist aber der Tiefentest fehlschlägt. |
zpass | Legt fest was passiert wenn sowohl der Stenciltest als auch Tiefentest erfolgreich ist. Ist der Tiefentest deaktiviert so gilt dieser als bestanden. |
Beschreibung
Jeder Pixel wird der mit glStencilFunc festgelegten Test unterzogen. Welche Auswirkung dieser Test nun auf den Schablonenpuffer(stencil buffer) selbst hat, wird mit glStencilOp festgelegt. Auf diese weise ist es möglich durch das Zeichnen von Primitiven den Schablonenpuffer zu verändern. Der Inhalt Schablonenpuffer kann anschließen als eine Art Schablone verwendet werden um Teile der Zeichenfläche vom Zeichnen auszunehmen. Diese Technik wird vorallem bei Rendervorgängen mit mehren Durchgängen genutzt um Spezial-Effekte wie Spiegelungen, decals und outlining zu erzeugen.
- GL_KEEP
- Keine Veränderung
- GL_ZERO
- Setzt den Wert im Schablonen Puffer auf Null
- GL_REPLACE
- Setzt den Wert im Schablonen Puffer auf ref von glStencilFunc.
- GL_INCR
- Erhöht den Wert im Schablonen Puffer. Die obere Begrenzung liegt beim höchsten vorzeichenlosen Wert.
- GL_DECR
- Verringert den Wert im Schablonen Puffer.(Die untere Begrenzung liegt bei 0)
- GL_INVERT
- Bitweise Invertierung des Wertes im Schablonen Puffer.
Die Werte des Schablonenpuffers werden als Vorzeichenlose Ganzzahl behandelt. Wenn die Werte inkrementiert(erhöht) oder dekrementiert(verringert) werden, werden Sie anschließend auf das Intervall [0,max] umgerechnet, wobei max = (2^GL_STENCIL_BITS) -1 ist.
Hinweise
Beachten Sie, dass zfail ignoriert wird, wenn kein Tiefenpuffer existiert oder dieser nicht aktiviert ist. In these cases, fail and zpass specify stencil action when the stencil test fails and passes, respectively.
Falls kein Schablonenpuffer existiert(etwa weil das Pixel Format keinen enthält), ist der Stenciltest immer erfolgreich unabhängig von den Einstellungen durch glStencilOp.
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn einer der Parameter (fail, zfail und zpass) einen anderen Wert als die 6 Konstanten enthält.
GL_INVALID_OPERATION wird generiert wenn glStecilOp innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Zugehörige Wertrückgaben
- glGet mit Token GL_STENCIL_FAIL
- glGet mit Token GL_STENCIL_PASS_DEPTH_PASS
- glGet mit Token GL_STENCIL_PASS_DEPTH_FAIL
- glGet mit Token GL_STENCIL_BITS
- glIsEnabled mit Token GL_STENCIL_TEST
Siehe auch
glAlphaFunc, glBlendFunc, glDepthFunc, glEnable, glLogicOp, glStencilFunc