Auf den folgenden Seiten werden einige durch deutsche Kommentare erweiterte
OpenGl-Beispiele vorgestellt, die alle dem bei Addison-Wesley erschienenen
Buch
OpenGL Programming Guide entnommen wurden.
Das Copyright für diese Programme liegt bei der Firma Silicon
Graphics. Aus Platzgründen
wurde auf eine explizite Wiederholung der Copyright-Klausel im jeweiligen Quelltext
verzichtet. Eine komplette Sammlung aller Beispiele findet sich unter
http://trant.sgi.com/opengl/examples/redbook/redbook.html
.
- hello.c
- zeigt in Orthogonalprojektion ein rotes Rechteck auf blauem Hintergrund.
Es wird zunächst um eine Einheit in x-Richtung verschoben und danach um
45 Grad gedreht.
- wire-cube.c
- zeigt in perspektivischer Projektion einen gelben Drahtgitterwürfel
vor blauem Hintergrund. Der Würfel ist um 5 Einheiten nach hinten
verschoben, in y-Richtung um den
Faktor 1.5 skaliert und um 30 Grad bzgl. der y-Achse gedreht.
- wire-prop-cube.c
- zeigt in perspektivischer Projektion einen gelben Drahtgittelwürfel
vor blauem Hintergrund. Die Kamera wurde um 5 Einheiten nach hinten
verschoben. Bei Verändern des Ausgabefensters durch den
Benutzer wird die Funktion reshape aufgerufen,
die eine Neuberechnung des Viewports durchführt.
- click.c
- zeigt die Interaktion durch die Maus für
den Farbwechsel eines Dreiecks. Die globale Variablen g
wird durch den linken Maus-Button auf 1, durch den rechten
Mausbutton auf 0 gesetzt. In der Funktion display wird dadurch
entweder ein gelb oder ein rot erzeugt.
- key.c
- zeigt die Interaktion durch die Tastatur für den Farbwechsel
eines Dreiecks. Die globalen Variablen r,g und b
werden durch Betätigen der gleichnamigen Tasten entsprechend
gesetzt. In der Funktion display wird dadurch
das RGB-Tripel auf rot, grün oder blau gesetzt.
- planet.c
- zeigt die Interaktion durch die Tastatur für das Fortschalten
einer Rotationsbewegung. Durch Drücken der d-Taste
wird die Rotation der Erde um sich selbst um 10 Grad angestoßen, durch
Drücken der y-Taste wird die Rotation der Erde um
die Sonne um 5 Grad angestoßen.
- smooth.c
- zeigt ein Dreieck mit Farbverlauf. Erreicht
wird dies im Smooth-Shading-Modus durch Interpolation von
RGB-Werten, welche an den Ecken des Dreiecks vorgegeben sind.
- list.c
- zeigt eine Anwendung von Display-Listen.
Unter dem Namen listName wird ein rotes, gefülltes
Dreieck zusammen mit einer Translation hinterlegt. Ein
wiederholter Aufruf dieses Namens erzeugt eine Sequenz
von nebeneinander platzierten Dreiecken.
- bezier-curve.c
- zeigt eine durch vier zwei-dimensionale
Kontrollpunkte definierte
Bezier-Kurve. Zur besseren Sichtbarkeit werden die
Kontrollpunkte mit 5-facher Stärke platziert. Die Kurve
entsteht durch Auswertung eines Evaluators längs
eines von 0 nach 1 in 30 Schritten wandernden Parameters.
- bezier-surface.c
- zeigt ein durch 16 drei-dimensionale Kontrollpunkte
definiertes Bezier-Gitter.
Das Gitter entsteht durch
Auswertung eines Evaluators längs eines von 0 nach 1
in 8 Schritten und von 0 nach 1 in 30 Schritten
wandernden Parameters.
- teapot.c
- zeigt den klassischen Utah-Teapot in photo-realistischer
Projektion. Berücksichtigt werden Reflektionskoeffizienten
für diffuses und spekulares Licht, erzeugt von einer
Lichtquelle.
- teapot-rotate.c
- zeigt den klassischen Utah-Teapot in Bewegung. Erreicht
wird dies durch eine 1-Grad-Drehung in der Funktion display,
welche immer dann aufgerufen wird, wenn keine
anderen Events zur Abarbeitung anstehen
(Registrierung durch glutIdleFunc).
hello.c: Rotes Quadrat, gedreht und verschoben, auf blauem Hintergrund
wire-cube.c: Perspektivische Projektion eines Drahtgitterquaders, ohne Reshape
wire-prop-cube.c: Perspektivische Projektion eines Drahtgittelquaders, mit Reshape
click.c: Interaktion durch Maus zur Farbwahl
key.c: Interaktion durch Tastatur zur Farbwahl
planet.c: Interaktion durch Tastatur zur Rotationsbewegung
smooth.c: Dreieck mit Farbverlauf durch Interpolation
list.c : Dreiecke definiert durch Display-Liste
bezier-curve.c: zweidimensionale Bezier-Kurve
bezier-surface.c : dreidimensionale Bezierkurve
teapot.c: Teekanne mit Beleuchtung
teapot-rotate.c: rotierende Teekanne