Schablonenpuffer

Aus DGL Wiki
(Weitergeleitet von Stencil-Buffer)
Wechseln zu: Navigation, Suche

Schablonenpuffer - Stencil buffer

Der Stencilpuffer (Stencil = Schablone) besteht (wenn angefordert) je nach Hardware aus mindestens einer Bitfläche, aktuelle Karten implementieren diesen jedoch mit 8 Bitflächen. In diesem Puffer kann man während des Renderns über bestimmte Befehle Werte erstellen lassen, mit denen später Teile des Bildschirms ausmaskiert werden können. Dies geschieht über einen Vergleich des im Puffer befindlichen Referenzwertes und des ankommenden Vergleichswertes.


Anwendungsgebiete

Da der Stencilpuffer recht universal ist, sind auch seine Anwendungsgebiete recht weitgreifend, daher hier nur ein paar der häufigsten Anwendungen :

  • Bildteile ausmaskieren
Bei Spielen wie z.B. Flugsimulatoren oder Rennspiele schreibt man vor dem Rendern der Umgebung die Cockpitmaske in den Stencilpuffer. Das hat zur Folge, dass die Teile der Szene unter dem Cockpit nicht gerendert werden. So spart man Durchsatz und Füllrate.
  • Schatten
Schattentechniken gibt es diverse, eine (momentan) beliebte sind Schatten über den Stencilpuffer (egal ob planar oder volumetrisch). Dabei rendert man die Schattenvolumen der Objekte in den Stencilpuffer um so den Bereich zu markieren der im Schatten liegt.


Funktionen

Gibt an in welche Bitflächen geschrieben werden kann.
Setzt Vergleichswert, Referenzwert und Maske für den Stenciltest.
Gibt an wie die Werte im Stencilpuffer beim Bestehen/Durchfallen der Tests manipuliert werden.
  • glClear mit dem Token GL_STENCIL_BUFFER_BIT
Löscht den Stencilpuffer.

Ressourcen