31.10.2013 Aufrufe

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.4. OPENGL ES 2.0 GRAFIKPIPELINE 15<br />

endgültige Bild enthält. Bevor ein Fragment in den Framebuffer übertragen<br />

wird, können verschiedene Tests auf diesen angewendet werden, um herauszufinden<br />

ob es ggf. verworfen oder angezeigt wird. Dafür sind folgende Tests<br />

verfügbar, welche nach Bedarf verwendet werden können:<br />

Alpha-Test<br />

Der Alpha-Test wertet das Alpha-Attribut a der Fragmentfarbe aus. Anhand<br />

einer vorher definierten Funktion wird bewertet, ob das Fragment als<br />

komplett transparent gilt. Wenn dies der Fall ist, werden die restlichen Tests<br />

und das Speichern in den Framebuffer übersprungen. Die Funktion wird mit<br />

glAlphaFunc(func,value) festgelegt. Dabei muss value im Bereich [0,1] liegen<br />

und bezeichnet den Referenzwert. Für func kann aus einem Aufzählungstyp<br />

(Enumeration) verschiedene Vergleichsoperationen gewählt werden. Diese<br />

Operation legt fest, wie value und das Alpha-Attribut a der Fragmentfarbe<br />

verglichen werden.<br />

Es ist zu beachten, dass der Befehl glAlphaFunc in OpenGL ES 2.0 nicht<br />

zu Verfügung steht, dieser Test ist nur zu Vollständigkeit mit aufgeführt.<br />

Ist diese Funktionalität dennoch gewünscht kann diese im Fragmentshader<br />

selbstständig umgesetzt werden.<br />

Stencil-Test<br />

Dieser Test besteht daraus, dass die im Stancilbuffer erstellte Maske auf<br />

das Fragment angewendet wird. Im Stancilbuffer können durch diese Maske<br />

Bereiche festgelegt werden, welche herausgefiltert werden oder welche sichtbar<br />

sind. Dies wird zB. dazu verwendet, wenn nur bestimmte Bereiche neu<br />

gerendet werden sollen. Durch die Möglichkeit die gespeicherten Werte des<br />

Buffers zu inkrementieren oder zu dekrementieren, wird dieser auch für die<br />

Berechnung von Shadow-Volumes benötigt. Mehr Informationen zu diesem<br />

Thema können dem von NVIDIA veröffentlichen GPUGems[6] entnommen<br />

werden.<br />

Depth-Test<br />

Der Tiefen-Test ist dafür da, um herauszufinden, welche Fragments der Kamera<br />

am Nächsten und dadurch sichtbar sind. Dabei existiert, ähnlich dem<br />

Stancilbuffer, ein Depthbuffer, welcher die Tiefenwert des sich momentan im<br />

Framebuffer befindlichen Fragments an dieser Stelle speichert. Zur Bewertung<br />

wird die Tiefe des neuen Fragments mit der des Alten verglichen. Ist das<br />

Neue näher an der Kamera, also der Wert kleiner, wird das neue Fragment<br />

in den Framebuffer übernommen und der neue Tiefenwert im Depthbuffer<br />

gespeichert. Ist dieses nicht der Fall, befindet sich das neue Fragment hinter<br />

dem alten und wird im endgültigen Bild nicht sichtbar sein, das Fragment

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!