Aufgabe 8.4 (10 Punkte)
Wir betrachten uns einen bestimmtem Pixel auf dem Bildschirm. Folgender
Ablauf von Ereignissen findet statt.
- glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
(Der -Wert wird auf und die Farbe auf
gesetzt.)
- glDisable(GL_BLEND);
- glEnable(GL_DEPTH_TEST);
- Drawaufruf erzeugt Fragment
.
- glEnable(GL_BLEND);
- Drawaufruf erzeugt Fragment
.
- glDisable(GL_DEPTH_TEST);
- Drawaufruf erzeugt Fragment
.
- glEnable(GL_DEPTH_TEST);
- Drawaufruf erzeugt Fragment
.
- glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_BLEND);
- Drawaufruf erzeugt Fragment
.
Welche Werte würde der Pixel (sowohl Farbe, als auch -Wert) jeweils unmittelbar
nach den Schritten 5, 7, 9, 11 und 15 haben? Begründen Sie
Ihre Antwort und halten Sie die Rechnungen fest.
Bezeichnungen:
- alter -Wert des Pixels
- alte Pixelfarbe
- -Wert des neu entstandenen Fragments
- Farbe des neu enstandenen Fragments
- neuer -Wert des Pixels
- neue Farbe des Pixels
Punkt 5
- Depthtest aktiviert und
. Also besteht das Fragment
den Depthtest. Daher
und der nächste Schritt wird
durchgeführt.
- Blending deaktiviert. Also
.
Punkt 7
- Depthtest aktiviert und
. Also besteht das Fragment
den Depthtest nicht. Daher .
- Depthtest nicht bestanden. Also keine Änderung der Farbe.
.
Punkt 9
- Depthtest deaktiviert. Also ohne Überprüfung
. und
der nächste Schritt wird ausgeführt.
- Blending aktiviert. Also
Punkt 11
- Depthtest aktiviert und
. Also besteht das Fragment
den Depthtest. Daher
und der nächste Schritt wird
durchgeführt.
- Blending aktiviert. Also
Punkt 15
- Depthtest deaktiviert. Also ohne Überprüfung
. und
der nächste Schritt wird ausgeführt.
- Blending deaktiviert. Also
.