OpenGL bietet eine Schnittstelle zwischen dem Anwenderprogramm
und der Grafikhardware eines Computers zum Modellieren
und Projizieren von dreidimensionalen Objekten.
Diese Schnittstelle
enthält
-
200 Befehle in der OpenGL Library (beginnen mit gl) zum
Verwalten von elementaren geometrischen
Primiviten wie Punkte, Linien, Polygone, Bezierkurven und ihrer
Attribute wie Farben und Normalenvektoren.
-
50 Befehle in der OpenGL Utility Library
(beginnen mit glu) zum Verwalten von
NURBS (non uniform rational b-splines) und
quadrics (Körper mit durch quadratische Gleichungen
beschreibbaren Oberflächen, z.B. Kugel, Zylinder)
sowie zum vereinfachten Manipulieren
von Projektionsmatrizen.
OpenGl enthält keine Routinen zur Benutzerein- und -ausgabe
und zur Kommunikation mit dem (plattformspezifischen)
Fenstersystem. Hierfür sind zuständig
-
30 Befehle im OpenGL Utility Toolkit (beginnen mit glut)
zur Anbindung
der von OpenGl gerenderten Ausgabe an das jeweilige
Fenstersystem und zum Verwalten von höheren geometrischen
Objekten wie Kugel, Kegel, Torus und Teapot.
Bei manchen OpenGl-Implementationen (z.B. X Window System) kann die
Berechnung der Grafik und ihre Ausgabe auf verschiedenen
Rechnern stattfinden. Der Klient ruft
hierbei ein OpenGl-Kommando auf, mit Hilfe eines Protokolls
wird es übertragen und der Server setzt es in ein Bild um.
Um die Kommunikationsbandbreite zu minimieren, arbeitet
OpenGl als Zustandsmaschine. Dies bedeutet, daß einmal gesetzte
Zustände (z.B. die Vordergrundfarbe) bis zu ihrem Widerruf
beibehalten werden. Auch können komplexe geometrische Figuren
unter einem Namen in einer Display-Liste eingetragen
werden, so daß sie im Falle einer Wiederverwendung nicht erneut
übertragen werden müssen sondern unter Angabe ihres
Namens ausgewertet werden können.
OpenGl Rendering Pipeline
Die Bestandteile der OpenGl Rendering Pipeline lauten:
-
Vertex data (Knoten) oder Pixel data (Pixel)
sind definierende Bestandteile eines zu berechnenden Bildes.
-
display lists referenzieren Vertex und Pixel data.
-
Pixel operations regeln das Pre- und
Postprocessing von Pixeldaten.
-
evalutators approximieren
die durch Kontrollpunkte definierten
parametrischen Kurven und Oberflächen
zu Polygonzügen und Flächen samt
Normalenvektoren.
-
Per Vertex operations transformieren
3D-Welt-Koordinaten nach Vorgabe der syntetischen Kamera.
-
Primitive Assembly erledigt
clipping und backface removal.
-
Texture Assembly bildet benutzerdefinierte
Texturen auf Objekte ab.
-
Rasterization überführt geometrische Daten
und Pixelmengen zu fragments, welche
die für eine Bildschirmkoordinate relevanten
Informationen aufsammeln.
-
per fragment operations bilden den
Inhalt eines Fragments unter Berücksichtigung
des Tiefenpuffers und unter Anwendung von
Nebel- und Alpha-Masken auf eine Bildschirmkoordinate
im Frame buffer ab.