glStencilOp

Aus DGL Wiki
Version vom 3. Dezember 2005, 18:13 Uhr von DGLBot (Diskussion | Beiträge) (Bot: konvertiere/korrigiere HTML)

Wechseln zu: Navigation, Suche

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 diesem Falle geben zfail bzw. zpass and, welche Aktion stattfindet wenn der Stenciltest fehlschlägt bzw. passiert.

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


Siehe auch

glAlphaFunc, glBlendFunc, glDepthFunc, glEnable, glLogicOp, glStencilFunc