OpenGL und Glut unter Linux




Ein paar allgemeine Vorbemerkungen

OpenGL ist ein standardisierter Satz von Grafikfunktionen. Da diese Funktionen normalerweise direkt in der Grafikkarte ausgeführt werden, handelt es sich bei der OpenGL-Library um ein normiertes Interface zu den 3D-Funktionen der Grafikkarte. Wenn ein vernünftiger Grafiktreiber zu einer 3D-fähigen Grafikkarte installiert ist, kann man davon ausgehen, dass OpenGL bereits installiert ist. Dann wird auch GLU (GL-Utility-Library) vorhanden sein, denn GLU ist ein Bestandteil von OpenGL und muss nicht extra installiert werden. GLU enthält eine Reihe komplexerer und komfortablerer Funktionen, die in einigen Fällen den Umgang mit OpenGL vereinfachen.

GLUT (GL-Utility-Toolkit) dagegen ist eine ergänzende Bibliothek und muss extra installiert werden. GLUT stellt vor allem das OpenGL-fähige Fenster sowie die Ereignisschleife zum Abfangen von Keyboard- oder Mauseingaben bereit. Ohne diese Dinge wäre ein Programm auf der Basis von OpenGL gar nicht möglich. Allerdings gibt es verschiedene, meistens deutlich komfortablere aber auch umfangreichere Alternativen zu GLUT, z.B. SDL oder Irrlicht. GLUT wird normalerweise benutzt, um auf einfache Weise OpenGL-Funktionen zu testen oder zu demonstrieren. Heute wird GLUT in der Freeglut-Version verwendet, die aber völlig kompatibel zum ursprünglichen GLUT ist.

Installation von OpenGL und GLUT

Wie gesagt, um die Installation von OpenGL und Glu braucht man sich in Regel nicht zu kümmern; es sei denn, die Grafikkarte ist nicht 3D-fähig oder ein geeigneter Treiber lässt sich nicht installieren, weil irgendetwas nicht passt. In diesen Fällen bleibt nur das Ausweichen auf eine Softwarelösung wie Mesa, die aber für die meisten Zwecke viel zu langsam ist. Es empfiehlt sich, einen Blick in /usr/lib zu werfen, doch kann es durchaus sein, dass die OpenGL-Lib, die unter Linux die Bezeichnung libGL.so hat, dort nicht gefunden wird. Dann sollte man in die Unterordner hineinschauen, die sich auf die Grafikkarte beziehen. So kann sich auf einem Rechner mit NVidia-Karte die OpenGL-Lib z.B. in /usr/lib/nvidia-173 befinden.

Das Vorhandensein der Library bedeutet aber noch nicht, dass auch die entsprechenden Header installiert sind, so dass diese ggfs. nachinstalliert werden müssen. Überprüfen kann man das durch einen Blick in den Ordner /usr/include. Wenn die Header vorhanden sind, müsste hier ein Unterordner /usr/include/GL existieren, und darin u.a. die Dateien gl.h und glu.h. Fehlt dieses, kann man auf die Entwicklerpakete von Mesa zurückgreifen, welche die Header zur Verfügung stellen.

GLUT wird am besten als distributionseigenes Paket installiert. Damit sind die Dateien dann auch gleich an der richtigen Stelle, wo sie von Codeblocks gefunden werden:

/usr/lib
/usr/lib/GL.

Verwendung in Codeblocks

Da es noch nicht darum geht, die OpenGL-Funktionen an sich zu testen, sondern nur das Programmgerüst in Codeblocks einzurichten, reicht es, wenn die drei Libs mit #include eingebunden werden und in der Main-Funktion zu jeder Lib ein Befehl probehalber aufgerufen wird.


#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glut.h"

int main (int argc, char** argv)
{
    glShadeModel (GL_SMOOTH);		// testet Zugriff auf die OpenGL-Lib
    gluPerspective (80, 1, 1, 500);	// testet Zugriff auf GLU-Funktionen
    glutInit (&argc, argv);		// testet Zugriff auf GLUT

    return 0;
}

Und natürlich mussen noch die Libraries registriert werden:

GL
GLU
glut

Wenn man den Installationstest etwas weiter spannen möchte, kann man eines der Nehe-Tutorials herunterladen und den Code in Codeblocks einfügen. Es gibt eine ganze Reihe von einfachen Programmbeispielen, die zum Einstieg in OpenGL geeignet sind und mit GLUT arbeiten. Die verschiedenen Code-Versionen zum Download befinden sich jeweils ganz unten auf den Seiten.