Lektion MacOS
So, Sie möchten also mit OpenGL unter MacOS anfangen? Hier
erfahren Sie, was Sie brauchen und wie Sie es machen müssen.
Was Sie
brauchen:
Als allererstes brauchen Sie einen Compiler. Der beste und
bekannteste für Macintosh ist Metrowerks Codewarrior (http://www.metrowerks.com/). Wenn Sie
Schüler oder Student sind, besorgen Sie sich die Stundentenversion - es gibt
kein Unterschied zwischen dieser und der professionellen Version und sie kostet
Sie weniger.
Als nächstes benötigen Sie das OpenGL SDK (developer.apple.com/opengl/) von
Apple. Nun sind Sie bereit, um ein OpenGL Programm zu
erzeugen.
Beginnen wir mit GLUT:
Ok, hier ist der Anfang des
Programms, wo wir die Header inkludieren:
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "tk.h"
Der erste enthält die Standard OpenGL-Funktionen und die anderen drei,
weitere Funktionen, die wir in unserem Programmen nutzen werden.
Als
nächstes definieren wir einige Konstanten:
#define kWindowWidth 400
#define kWindowHeight 300
Wir benutzen diese für die Höhe und Breite unseres Fensters. Es folgen
die Funktions-Prototypen:
GLvoid InitGL(GLvoid);
GLvoid DrawGLScene(GLvoid);
GLvoid ReSizeGLScene(int Width, int Height);
... und die main() Funktion:
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (kWindowWidth, kWindowHeight);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
InitGL();
glutDisplayFunc(DrawGLScene);
glutReshapeFunc(ReSizeGLScene);
glutMainLoop();
return 0;
}
glutInit(), glutInitDisplayMode(), glutInitWindowSize(),
glutInitWindowPosition() und glutCreateWindow() initialisieren unser
OpenGL-Programm. InitGL() macht das Selbe im Mac Programm, wie im
Windows-Programm. glutDisplayFunc(DrawGLScene) teilt GLUT mit, dass die
DrawGLScene-Funktion benutzt werden soll, wenn wir die Szene zeichnen wollen.
glutReshapeFunc(ReSizeGLScene) teilt GLUT mit, dass wir die ReSizeGLScene-Funktion benutzen wollen, wenn sich die Fenster-Größe ändert.
Später
werden wir glutKeyboardFunc() benutzen, welche GLUT mitteilt, welche Funktion
wir benutzen wollen, wenn eine Taste gedrückt wird und glutIdleFunc() welche
GLUT mitteilt, welche Funktion wiederholt aufgerufen werden soll (wir werden
das benutzen um Sachen im Raum rotieren zu lassen).
Letztendlich
startet glutMainLoop() das Programm. Wenn diese erst mal aufgerufen wurde,
wird sie erst zur main() Funktion zurückkehren, wenn das Programm beendet
wird.
Sie haben's geschafft!
Nunja, das war alles. Fast alles
andere ist das selbe wie in NeHe's Beispielen. Ich rate Ihnen, dass Sie einen
Blick auf die Read.Me werfen, die den MacOS-Ports beiliegt, da diese mehr
Details über spezifische Änderungen der Beispiele selbst
beinhalten.
Habt Spaß!
Tony Parker (asp@usc.edu)
Deutsche Übersetzung: Joachim Rohde
Der original Text ist hier zu finden.
Die original OpenGL Tutorials stammen von NeHe's Seite.