Kapitel 18. Open GL Tutorial

Inhaltsverzeichnis
Einleitung
Ein einfaches Beispiel
Die Ereignisschleife
Ereignisbehandlung in Schleifen
OpenGL Befehlssyntax
OpenGL Primitive
Ändern des Zustandes
Zeichnen in 3D
Darstellungs- und Modellierungstransformationen
Viewport Transformation
Perspektivische Projektion
Orthographische Projektion
Anzeigelisten (Display Lists)
Animationen
Beleuchtung
Quellen
Anhang

von Georg Gullatz ,

Carl Mayer

und Thorsten Milianowitsch

Einleitung

OpenGL steht für Open Graphics Library und ist eine standardisierte Graphikbibliothek, die ihre historischen Wurzeln in der Bibliothek der Silicon Graphics GL hat. OpenGL hat mehrere hundert Funktionen, die Sie verwenden können, um 2D und 3D Rasterisierung mit einem Z-Bufferalgorithmus durchzuführen. OpenGL stellt dem Programmierer eine kleine Sammlung geometrischer Primitive - Punkte, Zeilen, Polygone, Bilder und Bitübersichten zur Verfügung. Die zur Verfügung gestellten Primitive und Befehle steuern, wie diese Nachrichten in den Bildspeicher übertragen werden. Die OpenGL-Spezifikation ist Betriebssystem und GUI unabhängig.

Einige Implementierungen von OpenGL, wie die auf den meisten PC, funktionieren vollständig auf Software Basis. Andere ziehen Nutzen aus spezieller Graphikhardware, die für einige Workstations und PC verfügbar ist.

Es ist ganz auf maximale Geschwindigkeit bei der Darstellung von 3D-Objekten getrimmt. OpenGL beherrscht deshalb keine Raytracing- und erst recht keine Radiosity-Rechnungen. Für Effekte wie Schatten und Spiegelungen muß der Anwendungsprogrammierer mit viel Aufwand selbst sorgen.

OpenGL ist deshalb nichts für photorealistische Bilder, eignet sich aber wegen seiner hohen Geschwindigkeit ideal für Virtual-Reality-Anwendungen oder für 3D-Modellierungsprogramme. Dank OpenGL sieht der Benutzer hier schattierte Körper statt der üblichen Drahtgittermodelle. Mit dieser Funktion steht OpenGL zwar als Grafikbibliothek nicht allein, sein Vorteil ist aber, daß es im Profi-Bereich (SiliconGraphics) unumstrittener Standard ist. Und sein Repertoire von rund 120 Funktionen kann sich durchaus sehen lassen:

OpenGL ist keine High-Level-Objektbeschreibungssprache, sondern stellt ausschließlich Punkte, Linien und konvexe Polygone räumlich dar. Windows NT enthält allerdings zwei Ergänzungsbibliotheken zur Erzeugung von Kugeln, Zylindern, Kegeln, Tori, NURB-Splineflächen und einigen weiteren Objekttypen. Außerdem finden sich dort Funktionen, die häufig verwendete Befehlsfolgen abkürzen.

OpenGL ist als `state machine´ (Zustandsmaschine) implementiert, das heißt: der Zustand der Render-Engine wird über Schaltfunktionen eingestellt und bleibt für alle weiteren Funktionsaufrufe erhalten - zumindest solange keine weiteren Zustandsänderungen passieren.

Das OpenGL API war für Gebrauch mit den Programmiersprachen C und C++ bestimmt, aber es gibt auch Schnittstellen für eine Anzahl von anderen Programmiersprachen wie Java, Tcl, Ada und Fortran.

Die Spezifikation OpenGL 1.1 wird von Silicon Graphics gepflegt und ist abrufbar unter:

http://www.sgi.com/Technology/openGL/glspec1.1/glspec.html

Dieses Tutorial verwendet mehrere populäre Bibliotheken um Portable graphische Anwendungen mit minimalem Aufwand zu erstellen. Für den Zweck dieses Tutorials kann man sich die GLU und GLUT Bibliotheken als Teil der OpenGL Bibliothek oder der OpenGL API (application programmer's interface) vorstellen, obwohl dies eigentlich nicht der Fall ist. Die Tcl/Tk Bibliothek wird nur für einige Anweisungen verwendet werden und stellt in diesen Fällen eine vernünftige Kommandozeile und graphische Oberfläche zur Verfügung.