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:
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:
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.