| Skript-Anfang | gdv_prakt_sose2012_teil1 – Seite 1 |
|---|---|
| Skript-Ende | gdv_prakt_sose2012_teil1 – Seite 6 |
Aufgabe 1
Frage 1
Es ist ein rotes Viereck auf einem schwarzen Hintergrund zu sehen. Die Farbe des Hintergrunds kann je nach Grafikkarte schwarz, weiß oder transparent sein.
Frage 2
Beide Anweisungen sind erforderlich. Sie definieren das zu zeichnende Primitiv. Alles was zwischen Begin und End steht wird zu diesem Primitiv hinzugefügt. Lässt man eine oder beide der Anweisungen weg, so bleibt das Bild leer.
Frage 3
Alle Anweisungen werden in eine Art Speicher / Queue geschoben, wo sie darauf warten gerendert zu werden. Sobald der Befehl aufgerufen wird, werden die abgelegten Anweisungen ausgeführt.
Frage 4
Flush kann an jeder Position in Animate und am Anfang von Render stehen. Es macht jedoch am meisten Sinn Flush am Ende aller Zeichen.-Anweisungen aufzurufen.
Frage 5
glColor4f( 1.0, 0.0, 0.0, 1.0);
glVertex3f( -0.5, -0.5, -0.5 );
glColor4f( 0.0, 0.0, 1.0, 1.0);
glVertex3f( 0.5, -0.5, -0.5 );
glVertex3f( 0.5, 0.5, -0.5 );
glVertex3f( -0.5, 0.5, -0.5 );
Frage 6
Die beste Position für den Clear-Befehl ist zu Beginn der Render-Methode, damit die Farb- und Tiefen-Buffer vor dem Rendern leer sind.
Frage 7
- glClearColor(1, 0.5, 0, 1);
- glClear(GL_COLOR_BUFFER_BIT);
Frage 8
Bei Animationen muss glClear verwendet werden, da ansonsten zuvor gerenderte Objekte noch angezeigt werden mit der alten und der neuen Position, wodurch Schatten/Schlieren entsehen.

Frage 9
Man sieht das grüne Quadrat
Frage 10
Dieses mal ist wieder das ursprüngliche, blau rote, Quadrat zu sehen. Die beiden Quadrate sind identisch, mit der Ausnahme, dass das grüne Quadrat auf der z-Achse verschoben ist. Es wäre zu erwarten, dass stets das Quadrat mit dem niedrigern z-Wert zu sehen ist, was es aber nicht ist. Dies liegt am Painter-Algorithmus.
Frage 11
- Alle Werte im Z-Buffer werden auf eiinen Wert, der für unendlich weit weg steht, gesetzt.
- Die Farbe wird mit Hintergrundfarbe initialisiert.
- Polygone werden nacheinander gerastert
- Die Pixel werden aus der Sicht des Betrachters miteinander verglichen, ob der z-Wert kleiner ist als der bisherige (je kleiner, desto näher).
- Der Wert im z-Buffer im Raster wird ggf. ersetzt.
- Im Framebuffer wird die Farbe des Pixels gesetzt.

Aufgabe 2
Frage 12
Der Würfel wurde mit einer Kantenlänge von 0.4 um den Ursprung herum gezeichnet. Die Kamera liegt im Ursprung und blickt in die Richtung der negativen Z-Achse. Die Clipping Plane begrenz den Würfel durch ihre Parameter Near und Far auf der z-Achse auf den positiven Bereich. Aus der Kameraposition sehen wir also auf die „Rückseite“ des Würfels.

Frage 13
a)
Die Clipping Plane schließt den Würfel nicht mit ein. Die Clipping Plane hat sich mit der veränderten Kameraposition mitbewegt und endet aufgrund des Winkels vor dem Würfel. Wenn der Far-Wert erhöht wird liegt der Würfel wieder im sichtbaren Bereich. Die folgenden Bilder zeigen die Seitenansicht auf die Szene und wie diese mit angepassten Far-Werten aussieht. Bei 1.14 ist der Würfel erstmals zu sehen und bei 1.41 ist der Würfel vollständig zu sehen.
glOrtho( -1, 1, -1, 1, 0, 1.41);


b)
glOrtho( -1, 1, -1, 1, 0, 1.41);
Oder der Würfel als Vollbild:
glOrtho( -0.2, 0.2, -0.2, 0.2, 0, 0.8);
c)
gluLookAt ( 1., 1., 0., 0., 0., 0., 0., 1., 0.);
glOrtho( -1, 1, -1, 1, 0, 1.41);
Hinweis
glOrtho schaltet OpenGL praktisch in einen 2D-Modus, wo die Z-Koordiante keine Rolle mehr im Bezug auf die letztendliche Größe eines Objektes hat (weit entfernte Objekte (mit hoher Z-Koordinate) werden genau so groß gezeichnet, wie nahe.) Damit dient die Z-Koordiante nur noch zur „Anordnung““ von Vorder- und Hintergründen auf der 2D-Zeichenfläche.