NeHe - Lektion a - OpenGL unter MacOS initialisieren

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.