GLEW, GLUT und SDL – über die Verwendung in unseren Programmbeispielen

Angehende Entwickler im Bereich der Spiele- und Grafikprogrammierung stehen nicht selten vor der gleichen Frage – welche Grafik-API soll man verwenden – OpenGL oder DirectX Graphics?
Oftmals fällt die Wahl auf DirectX, welches momentan als Standard-API in der Spieleentwicklung gilt. Darüber hinaus wird einem der Einstieg von Microsoft recht leicht gemacht – man installiert das DirectX-SDK (mitsamt seinen Programmbeispielen sowie einer ausführlichen Dokumentation) und kann loslegen.

OpenGL kann da nicht wirklich mithalten, man kann sich zwar die Spezifikation der aktuellen Version herunterladen, etwas Vergleichbares wie das DirectX-SDK sucht man jedoch vergebens. Der große Vorteil von OpenGL – die Plattformunabhängigkeit – kann dieses Manko – das Fehlen eines vernünftigen SDKs – nicht wettmachen. Darüber hinaus wurde OpenGL von vielen Entwicklern bereits für klinisch tot erklärt, so sehr hinkte es der Entwicklung von DirectX Graphics hinterher. Doch dieses Bild beginnt sich zu wandeln, denn OpenGL 3.x und OpenGL 4.x haben wieder den Anschluss gefunden und bieten sich als ernsthafte Alternative in der Spieleentwicklung an.

Was sind nun die ersten Schritte beim Einsatz von OpenGL? Zunächst einmal benötigen wir Zugriff auf alle OpenGL-Funktionen, -Objekte und -Erweiterungen (extensions). Hierbei kommt die GLEW-Library (OpenGL Extension Wrangler Library) zum Einsatz. Sie ist praktisch das Herzstück einer jeden OpenGL-Anwendung. Damit sich unsere Programmbeispiele fehlerfrei kompilieren lassen, müssen wir darüber hinaus die GLUT-Library (OpenGL Utility Toolkit) mit einbinden.

Zum Laden von Grafikdateien (wir verwenden in unseren Programmbeispielen BMP- sowie PNG-Grafiken), die wir für das Erstellen von Texturen benötigen, verwenden wir als weitere Bibliothek SDL Image, eine Erweiterung von SDL (Simple Directmedia Layer), welches ursprünglich als eine plattformunabhängige Alternative zu DirectX entworfen wurde.

Des Weiteren benötigen wir in unseren Programmbeispielen natürlich eine Mathematik-Bibliothek. Auf einem Windows-Rechner bietet sich zweifelsohne die Verwendung der DirectX-Mathematik-Funktionen und -Klassen an (D3DXMath-Bibliothek). Um jedoch nicht den Vorteil der Plattformunabhängigkeit zu verlieren, haben wir eine eigene Library mit den gleichen Funktions-, Struktur- und Klassendeklarationen entworfen (DirectXBasedMath). Beide Bibliotheken sind somit austauschbar und können je nach Bedarf eingesetzt werden.

Schauen wir uns einmal an, wie die einzelnen Bibliotheken in unsere Programmbeispiele eingebunden werden:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#include "Imports/DirectXBasedMath.h"

#include "Imports/glew.h"
#include "Imports/wglew.h"
#include "Imports/glut.h"

#include "Imports/SDL/include/SDL.h"
#include "Imports/SDL/include/SDL_image.h"

Nachdem nun die benötigten Bibliotheken eingebunden worden sind, muss die OpenGL-Anwendung initialisiert werden. In den folgenden Artikeln werden wir ausführlich darauf eingehen.