Was ist OpenGL – eine Einführung.

OpenGL (Open Graphics Library) ist ein Standard für 3D Rendering und 3D-Hardware-Beschleunigung.

Der größte Vorteil von OpenGL ist seine Plattform- und Betriebssystemunabhängigkeit. OpenGL läuft also unter Windows, MacOS, Linux und allen weiteren gängigen Systemen gleichermaßen einwandfrei.

Charakteristisches Merkmal von OpenGL ist die hohe Qualität und Leistungsfähigkeit.

Anwendungsgebiete sind CAD/CAM/CAE, Spiele, Medizin, Virtual Reality und Filme.

OpenGL bietet für Entwickler eine Reihe von Vorteilen:

  • Open-Source und damit kostenfrei.

  • Stabil und kompatibel zu früheren Versionen.

  • Unabhängig vom verwendeten Betriebssystem.

  • Neutral und plattformübergreifend.

  • Skalierbar.

  • Detaillierte Dokumentation erhältlich

  • Ausgereifte API.

Im Bereich der Softwareentwicklung ist OpenGL reich an Primitiven für Display-Listen, Geometrie und Bild, Transformationen usw. Eine Anbindung an C, C++, Fortran, Java und Lisp ist ausgehend von einer einheitlichen Spezifikation möglich. Zudem unterstützt OpenGL 2D und 3D gleichermaßen.

Im Bereich der Hardwarebeschleunigung werden je nach Grafik-Karte gewisse Befehle von reiner Software und Hardware oder von Soft- und Hardware gemischt ausgeführt. Die Implementierung kann problemlos bei low-cost PCs als auch Grosscomputern flexibel durchgeführt werden. Weiterhin sind kartenspezifische Erweiterungen jederzeit problemlos möglich.

OpenGL bildet die Grundlage für viele Anwendungen. So bauen viele high-level APIs auf OpenGL auf. Die folgende Liste veranschaulicht Applikationen, die auf OpenGL basieren.

OpenGl unterstützt keine Peripherie wie Maus oder Tastatur und die Primitive (Punkt, Linie, Polygone, Rechteck) unterliegen den jeweils aktiven Modi, die über Prozeduraufrufe gesetzt werden können. Es handelt sich bei OpenGL um eine low-level-API, die das Rendering und weniger das Modellieren von komplexen Objekten unterstützt.

Charakteristisch für OpenGL ist das Client-Server-Modell:

Server: Übernimmt das Rendering

Client: Programm nutzt die vom Server bereitgestellten Services.

OpenGL Synthax: Alle Elemente von OpenGL fangen mit gl an. Dabei gelten die folgenden Konventionen:

Typen GLtyp
Konstanten GL_KONSTANTE
Befehle glBefehlAnzahlDatentyp

Beispiel: Wie setze ich eine bestimmte Farbe:

GLColor3f (1, 0, 0) GLtyp
gl Ein OpenGL Befehl
Color Farbe setzen
3 Mit 3 Parametern
1 Vom Typ float

Charakteristisch für OpenGL ist die Arbeit mit Zustandsvariablen. Jeder Parameter, der von einer Funktion gesetzt wird ist solange gültig, bis er umgesetzt wird. Im oberen Beispiel bedeutet dies, dass alle nachfolgenden Elemente solange in der Farbe gezeichnet werden, bis ein erneuter Aufruf von glColor die Farbe umsetzt.

Stacks werden angewandt, um sich Zustände zu merken, meist Transformationen wie z.B. Drehungen. Stacks sind LIFO-Strukturen, d.h. wird z.B. ein Gegenstand als erstes auf einem Stapel abgelegt (push-Operation), wird dieser wieder als erstes vom Stapel genommen (Pop-Operation).

Möchte man ein Element zeichnen muss mit glBegin (GL_ELEMENT); eingeleitet und mit glEnd () abgeschlossen werden. Dazwischen werden die Koordinaten und weitere Parameter des zu zeichnenden Elements spezifiziert. Beispiel: eine rote Linie:

Copy to Clipboard

Die folgende Tabelle gibt einen Überblick über die Zeichenelemente von OpenGL.

GL_POINTS Einfache Punkte
GL_LINES Jeweils zwei Koordinaten bilden eine Linie
GL_LINE_STRIP Die Folge von Koordinaten wird mit Linien verbunden.
GL_LINE_LOOP Wie GL_LINE_STRIP, nur wird die letzte Koordinate mit der ersten verbunden.
GL_TRIANGLES Jeweils 3 Koordinaten bilden ein Dreieck.
GL_TRIANGLES_FAN Die erste Koordinate bildet das Zentrum. Die nächsten zwei bilden mit diesem ein Dreieck. Jeder weitere Punkt wird mit dem vorhergehenden und dem Zentrum zu einem Dreieck verbunden.
GL_QUADS Jeweils vier Koordinaten bilden ein Viereck.
GL_QUAD_STRIP Jeweils zwei Punkte bilden mit den beiden vorhergehenden ein Viereck.
GL_POLYGON Geschlossenes Vieleck – der letzte Punkt wird mit dem ersten verbunden.

Vielen Dank fürs Lesen.