OpenGL.org 3Dsource.de: Infos rund um 3D-Computergrafik, OpenGL und VRML
space Telefon-Tarife space VDI - Arbeitskreis Fahrzeugtechnik space Beschallungsanlagen und Elektroakustik space Heise-News space

OpenGL - Die 3D-Bibliothek für industrielle Anwendungen


Warum OpenGL ?

Ein wesentlicher Vorteil der OpenGL gegenüber den anderen verfügbaren 3D API's ist die einfache Portierbarkeit von OpenGL Applikationen auf verschiedene Implementierungen (viele Firmen haben eine eigene, auf die jeweilige Hard- und Software spezialisierte OpenGL Bibliothek). Um diese Eigenschaft zu garantieren, muß jede OpenGL API, d.h. die im System installierte Grafikbibliothek, alle in der Spezifikation genannten Funktionen unterstützen. Kann die Ausführung der Grafikbefehle nicht "in Hardware", also durch die Grafikkarte ausgeführt werden, muß die Bibliothek eigene Berechnungsmethoden zur Verfügung stellen. Überprüft wird die vollständige Funktionalität durch einen Conformance Test, dessen fehlerfreies Bestehen die Grundvoraussetzung für das Erteilen des OpenGL Logos ist [13].

Ein anderer Vorzug ist die individuelle Erweiterbarkeit: Jedem Anbieter einer OpenGL Implementierung ist es freigestellt, durch eigene Extensions über die Basisfunktionalität hinaus die optimale Nutzung seiner Hardware zu ermöglichen.

Ein dritter Vorteil ergibt sich aus der Fortführung der gerade genannten Eigenschaft: Die OpenGL wird schrittweise an die sich verändernden Bedürfnisse angepaßt, indem bewährte Extensions, welche die Leistungsfähigkeit der OpenGL verbessern, zu den in der Spezifikation genannten Kernfunktionen hinzugefügt werden. Zudem enthält jede OpenGL API eine zusätzliche Bibliothek GLU (OpenGL Utility Library), die oft benötigte Funktionen eines deskriptiven Grafiksystems (u.a. Objekte wie Kreis und Zylinder) bereitstellt.

Die im März 1998 verabschiedeten Spezifikationen der OpenGL 1.2 bzw. der Erweiterungen für das X Window System GLX 1.3 sowie die schon länger aktuelle Version der GLU 1.2 zeigen, daß die OpenGL eine ständige, aber trotzdem kontrollierte Erweiterung ihrer Fähigkeiten erfährt (Im Gegensatz zur Microsoft API DirectX, bei der aufeinander folgende Versionen oftmals gar nicht miteinander kompatibel sind).

Des weiteren stellt die OpenGL den de facto Industriestandard für eine 3D Visualisierung dar, für den auf jeder Plattform verschiedene Stufen der Hardware Beschleunigung existieren. Da sich zudem eine Nutzung von OpenGL durch die Spieleindustrie abzeichnet, kann man eine weitere Verbreitung von OpenGL und damit auch preisgünstigere Grafikhardware erwarten. Update 2003: Derzeit wird eigentlich jede Grafikkarte mit hardwarebeschleunigten OpenGL- und DirectX-Treibern ausgeliefert. Die Karten sind durchaus preisgünstig, was aber leider nicht mit billig gleichgesetzt werden kann...

[zum Seitenanfang]


Das wichtigste zu OpenGL:

Aufbau

Die OpenGL (Open Graphics Library) ist aus zwei getrennten Bibliotheken aufgebaut:
Der Basis GL sowie einer Erweiterung, der GLU (OpenGL Utility Library). Dann gibts noch vom System abhängige Erweiterungen. Für Unix ist das eine eigene Bibliothek, die GLX (GL X extensions, X ist die grafische Oberfläche für Unix).
Miniweich Microsoft hat wie immer einen eigenen Weg gewählt; deren Windows-Erweiterungen WGL sind bereits in der Basis-Bibliothek (opengl32.dll) eingebaut.

Funktionsweise

Die OpenGL ist eine Bibliothek für die Beschreibung und Darstellung 3-dimensionaler Welten. Als prozedurales Grafiksystem kennt sie zunächst nur ganz einfache geometrische Objekte (Punkte, Linien, Dreiecke, Polygone). Zum Glück wird durch die GLU auch ein Schritt in Richtung deskriptiver Grafiksysteme vorgenommen: Hier sind bereits einfache Körper definiert (Scheibe, Zylinder, Kugel), so dass die Standardkörper nicht erst umständlich selbst beschrieben werden müssen.

Trotzdem sollte man verstehen, was man da macht. Ohne zumindest ungefähr zu wissen, was Vektoren, Matrizen, Koordinatensysteme, homogene Koordinaten usw. sind und welcher Rechenaufwand dahinter steht, kann man zwar problemlos einsteigen. Man läuft aber Gefahr, irgendwann die Kontrolle zu verlieren ("was macht denn die sch[öne] Kiste jetzt schon wieder ?!").

Zusatztools

Die OpenGL stellt keine Funktionen für das Öffnen von Fenstern, Menüs, Import von Bilder, Einlesen oder gar Auswerten von Dateien zur Verfügung. Damit sind die Programme zwar hoch portabel, brauchen aber auch noch einige Erweiterungen.
Für fast alle Beispielprogramme wird GLUT (OpenGL Utility Toolkit) genutzt, welches ein OpenGL-Fenster erzeugen kann und Benutzereingaben (Maus, Tastatur) auswertet. GLUT ist auf etliche Systeme portiert.

[zum Seitenanfang]

Allgemeine Empfehlungen zum Einstieg in OpenGL:

Um Fallstricke zu vermeiden, sollte ich diesen Punkt vielleicht umbenennen: "Wie habe ich mir etwas über OpenGL angeeignet ?", oder so ähnlich...

Mittlerweile sind die früher sehr verstreut abgelegten Informationen fast alle auf der OpenGL Homepage zu finden. Dort oder auf der Webseite von SGI findet man (in Englisch) die Spezifikationen, also die Beschreibung des Leistungsumfangs der einzelnen OpenGL Versionen. Ausserdem sind da die SIGGRAPH-Kurse abgelegt, und die kommen mit ganz guten Beispielen für die "Höhere Kunst"... Auf alle Fälle lohnt sich ein Besuch. Und nicht vom Englischen abschrecken lassen: Im Gegensatz zu deutscher Literatur wird hier Wert auf Verständlichkeit gelegt, Unmengen an Fachwörtern gelten eher als Hinweis darauf, dass der Author den Kram gar nicht verstanden hat... ;-))

Auf OpenGL.org findet man auch neueste Informationen, Links, Beispiele und einiges mehr. Falls noch nicht geschehen, kann man sich im folgenden den GLUT und MESA Quelltext beschaffen. Durch die Beispielprogramme lernt man schon eine ganze Menge.

Wenn man dann noch nicht genug hat, kann man sich der Beschaffung von Büchern zuwenden (alle in Englisch, ich habe mir die deutschen Bücher zwar angeschaut, aber naja).
Das Blue Book ist eher eine Funktionsbeschreibung, das geben also auch die Spezifikationen oder Manpages her. Das Green Book ist eher auf Unix konzentriert, bietet aber auch eine umfangreiche Referenz für GLUT. Auf alle Fälle empfehlenswert ist das Red Book. Das ist sogar online verfügbar (zum Lesen erlaubt, das Herunterladen ist wohl weniger erwünscht).
Diese Bücher könnt ihr zum Beispiel bei Amazon.de bestellen, dort kommt ihr pro Buch mit etwa 60,- EUR weg (50US$ + Zoll).

  • Red Book
    Woo at.al.:"OpenGL Programming Guide", The Official Guide to Learning OpenGL, Release 3 (OpenGL 1.2), Addison-Wesley Publishing Company.
    ISBN: 0-201-60458-2
  • Green Book
    Kilgard, Mark J.: "OpenGL programming for the X Window System." Addison-Wesley Developers Press. 2. Edition 1997.
    ISBN: 0-201-48359-9

Für neue Anregungen, hilfreiche Tips oder Problemlösungen eignet sich die newsgroup comp.graphics.api.opengl hervorragend (vorher in die FAQ schauen, sonst gibts da Ärger). Ansonsten freue ich mich auch über Vorschläge, diese Seiten in bestimmten Bereichen zu ergänzen... [Ich werde diese wohlwollend prüfen - hätte ein Prof. von uns jetzt wohl gesagt ;-))]

[zum Seitenanfang]
Seite durchsuchen nach:

Fragen oder Ideen an:
Thomas.Kern@3Dsource.de
Linux-Counter
(C) Thomas Kern