gl.StencilFunc(func, ref, mask)
Der Schablonentest eliminiert bedingt ein Pixel basierend auf dem Ergebnis
eines Vergleichs zwischen dem Referenzwert und dem Wert im Schablonenpuffer.
Um den Test zu aktivieren und zu deaktivieren, rufen Sie gl.Enable()
und gl.Disable() mit dem Argument #GL_STENCIL_TEST
auf.
Um Aktionen basierend auf dem Ergebnis des Schablonentests festzulegen, rufen
Sie den Befehl gl.StencilOp() auf.
func
ist eine symbolische Konstante, die die Vergleichsfunktion der Schablone
bestimmt. func
akzeptiert einen von acht Werten, die in der folgenden Liste
dargestellt wird. ref
ist ein ganzzahliger Referenzwert, der im
Schablonenvergleich verwendet wird. Er wird auf den Bereich (0,2^n-1)
festgelegt, wobei n die Anzahl der Bitplanes im Schablonenpuffer sind. mask
wird bitweise mit dem Referenzwert und dem Schablonen AND-Wert gespeichert,
wobei die AND-Werte am Vergleich teilnehmen.
Wenn stencil
den Wert repräsentiert, der in der entsprechenden
Schablonenpufferposition gespeichert ist, zeigt die folgende Liste die
Wirkung jeder Vergleichsfunktion, die durch func
angegeben werden kann.
Nur wenn der Vergleich gelingt, wird der Pixel an die nächste Stufe des
Rasterisierungsprozesses übergeben. Siehe gl.StencilOp für Details. Alle
Tests behandeln Schablonenwerte als vorzeichenlose ganze Zahlen im Bereich
(0,2^n-1), wobei n die Anzahl der Bitebenen im Schablonenpuffer ist.
Die folgenden Werte werden von func
akzeptiert:
#GL_NEVER
#GL_LESS
#GL_LEQUAL
#GL_GREATER
#GL_GEQUAL
GL_EQUAL
GL_NOTEQUAL
#GL_ALWAYS
Zunächst ist der Schablonentest deaktiviert. Wenn es keinen Schablonenpuffer gibt, kann keine Schablonenmodifikation stattfinden und es ist, als ob der Schablonentest immer bestanden wird.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_ALWAYS
(siehe oben)#GL_INVALID_ENUM
wird erzeugt, wenn func
nicht einer der acht akzeptierten Werte ist
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.StencilFunc()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_STENCIL_FUNC
, #GL_STENCIL_VALUE_MASK
, #GL_STENCIL_REF
oder #GL_STENCIL_BITS
gl.IsEnabled() mit dem Argument #GL_STENCIL_TEST