glStencilOp: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K
(Artikel erstellt)
Zeile 1: Zeile 1:
{{Offline}}
+
= glStencilOp =
 +
 
 +
<br>
 +
== Name ==
 +
'''glStencilOp''' - Legt fest was beim Stencil Test passiert.
 +
 
 +
<br>
 +
== Delphi-Spezifikation ==
 +
procedure <b>glStencilOp</b> (<i><b>fail,zfail,zpass</b></i>: TGLenum);
 +
 
 +
<br>
 +
 
 +
== Parameter ==
 +
 
 +
Die Parameter können folgende Konstanten enthalten:'''GL_KEEP''', '''GL_ZERO''', '''GL_REPLACE''', '''GL_INCR''', '''GL_DECR''', und'''GL_INVERT'''. Der Standartwert bei allen Parametern ist '''GL_KEEP'''.
 +
 
 +
{| border="1" rules="all"
 +
! fail
 +
| Legt fest gemacht wird wenn der Stencil Test fehlschlägt. 
 +
|-
 +
! zfail
 +
| Legt fest was passiert wenn der Stencil Test erfolgreich ist aber der Tiefentest fehlschlägt.(Standart='''GL_KEEP''')
 +
|-
 +
! zpass
 +
| Legt fest was passiert wenn sowohl der [[Stenciltest]] als auch [[Tiefentest]] erfolgreich ist. Ist der [[Tiefentest]] deaktiviert so gilt dieser als bestanden.
 +
|}
 +
 
 +
<br>
 +
 
 +
== Beschreibung ==
 +
 
 +
Jeder Pixel wird der mit [[glStencilFunc]] festgelegten Test unterzogen. Welche Auswirkung dieser Test nun auf den [[Schablonen Puffer]](stencil buffer) selbst hat, wird mit '''glStencilOp''' festgelegt. Auf diese weise ist es möglich durch das Zeichnen von Primitiven den [[Schablonen Puffer]] zu verändern. Der Inhalt [[Schablonen Puffer]] 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 genutz 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.
 +
 
 +
<br>
 +
 
 +
Der Maximale Wert errechnet sich aus "2 hoch [[glGet#GL_STENCIL_BITS|Bits pro Pixel]] -1".
 +
 
 +
== Hinweise ==
 +
 
 +
Falls kein [[Schablonen Puffer]] exsistiert(etwa weil das Pixel Format keinen enthält), ist der Stencil test immer erfolgreich unabhängig von den Einstellungen durch '''glStencilOp'''.
 +
 
 +
<br>
 +
 
 +
== Fehlermeldungen ==
 +
 
 +
'''GL_INVALID_OPERATION''' wird generiert wenn FUNCTIONNAME innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
 +
 
 +
'''GL_INVALID_ENUM''' wird generiert wenn einer der Parameter (fail, zfail und zpass) einen anderen Wert als die 6 Konstanten enthält.
 +
 
 +
<br />
 +
 
 +
==  Zugehörige Wertrückgaben ==
 +
*[[glGet]] mit Token [[glGet#GL_STENCIL_FAIL|GL_STENCIL_FAIL]]
 +
*[[glGet]] mit Token [[glGet#GL_STENCIL_PASS_DEPTH_PASS|GL_STENCIL_PASS_DEPTH_PASS]]
 +
*[[glGet]] mit Token [[glGet#GL_STENCIL_PASS_DEPTH_FAIL|GL_STENCIL_PASS_DEPTH_FAIL]]
 +
*[[glGet]] mit Token [[glGet#GL_STENCIL_BITS|GL_STENCIL_BITS]]
 +
*[[glIsEnabled]] mit Token GL_STENCIL_TEST
 +
<br>
 +
 
 +
== Siehe auch ==
 +
 
 +
[[glAlphaFunc]], [[glBlendFunc]], [[glDepthFunc]], [[glEnable]], [[glLogicOp]],
 +
[[glStencilFunc]]
 +
 
 +
[[Kategorie:GL|StencilOp]]

Version vom 21. September 2004, 15:59 Uhr

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 gemacht wird wenn der Stencil Test fehlschlägt.
zfail Legt fest was passiert wenn der Stencil Test erfolgreich ist aber der Tiefentest fehlschlägt.(Standart=GL_KEEP)
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 Schablonen Puffer(stencil buffer) selbst hat, wird mit glStencilOp festgelegt. Auf diese weise ist es möglich durch das Zeichnen von Primitiven den Schablonen Puffer zu verändern. Der Inhalt Schablonen Puffer 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 genutz 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.


Der Maximale Wert errechnet sich aus "2 hoch Bits pro Pixel -1".

Hinweise

Falls kein Schablonen Puffer exsistiert(etwa weil das Pixel Format keinen enthält), ist der Stencil test immer erfolgreich unabhängig von den Einstellungen durch glStencilOp.


Fehlermeldungen

GL_INVALID_OPERATION wird generiert wenn FUNCTIONNAME innerhalb eines glBegin-glEnd Blocks aufgerufen wird.

GL_INVALID_ENUM wird generiert wenn einer der Parameter (fail, zfail und zpass) einen anderen Wert als die 6 Konstanten enthält.


Zugehörige Wertrückgaben


Siehe auch

glAlphaFunc, glBlendFunc, glDepthFunc, glEnable, glLogicOp, glStencilFunc