Bezeichnung
gl.StencilFunc -- stellt die Funktion und den Referenzwert für den Schablonentest ein
Übersicht
gl.StencilFunc(func, ref, mask)
Beschreibung
Schablonieren, wie z.B. Tiefenpufferung, aktiviert und deaktiviert das Zeichnen auf Pro-Pixel-Basis. Schablonenebenen werden zunächst mit Hilfe von GL-Zeichnungsgrundmuster gezeichnet, dann werden Geometrie und Bilder mit Hilfe der Schablonenebenen gerendert, um Teile des Bildschirms auszublenden. Schablonieren wird typischerweise in Multipass-Rendering-Algorithmen verwendet, um Spezialeffekte wie Dekor, Konturen und konstruktive Solide-Geometrie-Rendering zu erzielen.

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
Fällt immer aus.

#GL_LESS
Wird übergeben, wenn (ref & mask) < (stencil & mask) ist.

#GL_LEQUAL
Wird übergeben, wenn (ref & mask) <= (Stencil & mask) ist.

#GL_GREATER
Wird übergeben, wenn (ref & mask) > (stencil & mask) ist.

#GL_GEQUAL
Wird übergeben, wenn (ref & mask) >= (stencil & mask) ist.

GL_EQUAL
Wird übergeben, wenn (ref & mask) = (stencil & mask) ist.

GL_NOTEQUAL
Wird übergeben, wenn (ref & mask) != (stencil & mask) ist.

#GL_ALWAYS
Besteht immer.

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.

Eingaben
func
gibt die Testfunktion an; der Initialwert ist #GL_ALWAYS (siehe oben)
ref
gibt den Referenzwert für den Schablonentest an; der Anfangswert ist 0
mask
gibt eine Maske an, die sowohl mit dem Referenzwert als auch mit dem gespeicherten Schablonenwert AND-verknüpft ist, wenn der Test abgeschlossen ist; der Anfangswert ist bei allen 1's
Fehler
#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.

Verbundene get-operationen
gl.Get() mit dem Argument #GL_STENCIL_FUNC, #GL_STENCIL_VALUE_MASK, #GL_STENCIL_REF oder #GL_STENCIL_BITS

gl.IsEnabled() mit dem Argument #GL_STENCIL_TEST


Navigation zeigen