NeHe - Lektion c - OpenGL unter MacOS X mit GLUT initialisieren

Lektion MacOS X



Sie wollen also OpenGL unter MacOS X nutzen? Hier lernen Sie, was Sie brauchen und was Sie dafür machen müssen. Das hier ist eine direkte Übersetzung des MacOS Ports, wenn Ihnen also etwas bekannt vorkommt, wissen Sie warum ;)

Was Sie brauchen:

Sie werden einen Compiler brauchen. Zur Zeit sind zwei Compiler verfügbar, Apple's "Project Builder" und Metrowerks CodeWarrior. Project Builder wurde Mitte Oktober (2000) frei verfügbar gemacht, weshalb dieses Tutorial die Erstellung eines GLUT Projektes in Project Builder demonstrieren wird.

Mit dem Project Builder anfangen:

Das ist ziemlich einfach. Wählen Sie einfach "File->New Project" (Datei-> neues Projekt) aus und wählen Sie eine "Cocoa Application." Nun wählen Sie den Namen Ihres Projektes und Ihre Projekt IDE wird erscheinen.

Nun wählen Sie das "Projekt" Menü aus und danach "Add Framework" (Framework hinzufügen), um das GLUT Framework hinzuzufügen. In 10.1 müssen Sie auch noch das OpenGL.Framework hinzufügen, machen Sie das auch noch.

Mit GLUT anfangen:

Entfernen Sie den Standard-Code auf einen der beiden Wege:

Löschen Sie die main.m Datei, welche mit dem Standard-Projekt kommt und fügen Sie eine neue main.c mit dem GLUT Code ein oder... Markieren Sie den gesamten Code in main.m und ersetzen Sie diesen mit dem GLUT Code.

Sie benötigen anfangs 3 Header:

    #include <OpenGL/gl.h>        // Header Datei für die OpenGL32 Library
    #include <OpenGL/glu.h>        // Header Datei für die GLu32 Library
    #include <GLUT/glut.h>        // Header Datei für die GLut Library

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.

Das war's!

Beachten Sie, dass der einzige wirkliche Unterschied darin liegt, dass wir die Header ändern. Ziemlich einfach!

In späteren Tutorials werden die Unterschiede größer sein, aber zur Zeit langt ein einfaches Austauschen der Header und das hinzufügen des Frameworks.

Habt Spaß!

R.Goff (unreality@mac.com)


Deutsche Übersetzung: Joachim Rohde
Der original Text ist hier zu finden.
Die original OpenGL Tutorials stammen von NeHe's Seite.