OpenGL ist eine standardisierte Schnittstelle für 3D-Darstellung.
Spezifikation: http://www.opengl.org/
Unter Linux gibt es verschiedene Implementierungen der OpenGL-Bibliothek:
Mesa - FreieSoftware und der defacto Standard
Accelerated-X - proprietärer X-Server mit OpenGL-Unterstützung
- ATI Linux Treiber
Wie funktioniert Mesa?
Mesa bietet die Möglichkeit für Software-Rendering (keine Hardware-Beschleunigung) und ist die Basis für verschiedene Möglichkeiten des Hardware-beschleunigten Rendering.
Hardware-beschleunigte 3D-Darstellung mit Mesa
DRI - Direct Rendering Infrastructure
DRI ist der Standard für XFree86 4.x.
DRI unterstützt derzeit nur sogenanntes Direct Rendering, d. h. es funktioniert nur auf einem lokalen Display. Über eine Remote-X-Session kann DRI nicht benutzt werden.
DRI benötigt passend zur Grafikkarte noch ein DRM (Direct Rendering Management)-KernelModul. Diese sind in Kernel 2.4 bereits für folgende Grafikkarten-Chipsätze enthalten:
- 3dfx Voodoo 3/4/5/Banshee
- 3dlabs MX/Gamma, Oxygen GMX 2000
ATI Rage Pro, Rage128, Radeon <= 9200
- Intel i810, i815 , i830
- Matrox G200, G400, G450
Genauere Informationen gibts auf http://dri.sourceforge.net/cgi-bin/moin.cgi/Status.
Für weitere Chipsätze gibt es Treiber und Kernel Module von den Hardware-Herstellern:
ATI neuere Radeon und FireGL binary-only
PowerVR Kyro/KyroII binary-only
ATI FireGL-Treiber bei Schneider-Digital.de binary-only, manchmal neuere Versionen als bei ATI
Utah-GLX
Utah-GLX ist die einzige Möglichkeit für 3D-Beschleunigung unter XFree86 3.3.6.
Utah-GLX bietet eine plattform-unabhängige Möglichkeit für 3D-Beschleunigung mit Indirect Rendering, d.h. es ist zwar etwas langsamer als Direct Rendering, funktioniert aber dafür auch übers Netzwerk.
Unterstützt werden diese Chipsätze unter XFree86 4.x:
- NVidia Riva/TNT/Geforce
- Matrox G200/G400
- S3 Savage
zusätzlich unter XFree86 3.x:
- Intel i810
- SiS 6326
- S3 Virge, Savage3D
Sonstige
Die proprietären Treiber von NVidia bieten ihre eigene Implementierung der OpenGL-Bibliothek mit Hardwarebeschleunigung.
Xi Graphics liefert mit Accelerated-X einen X-Server für eine breite Hardware-Palette. Darunter praktisch alle ATI, Matrox, einige 3Dlabs und zahlreiche andere Karten (außer NVidia). Es gibt von Accelerated-X auch eine Demo-Version, die jeweils eine halbe Stunde lang läuft. So kann und sollte man vor einem möglichen Kauf unbedingt testen, ob alles wie erwartet funktioniert. Acceleterated-X unterstützt auch Stereoskopie-Ausgabegeräte wie Shutterbrillen mit fast allen Grafikkarten (weit mehr als die Grafikkartenhersteller unter Windows bieten).
Desweiteren liefern HP und SGI eigene Treiber für ihre Linux-Workstations mit (teilweise DRI, teilweise NVIDIA-basierend). SGI Treiber
Programmierung
für OpenGL gibt es einige Frameworks, zum Beispiel Glut. Glut erleichtert das lernen von OpenGL ungemein, es beinhaltet z.B Wrapperfunktionen mit denen sich OpenGL Fenster sehr leicht initialisieren lassen.
Kleines Beispiel: main.c
Compile:
- gcc main.c -o main -lglut bzw. -lopenglut