Die Dateien init.h und init.cpp enthalten die wichtigsten Funktionen:
initGL enthält den nötigen Code um ein Fenster zu erstellen, den Kontext zu erzeugen
und GLut mitzuteilen welche Callbacks es nutzen soll:
Im ersten Abschnitt initialisieren wir das GLut selbst, erzeugen den Kontext und
ein Fenster mit einer Größe von 800x600 Pixel, dem Titel gltutünd der
Position (10,10).
Der zweite Abschnitt setzt lediglich einige Variablen im Kontext, während im dritten
Abschnitt Callbacks angegeben werden welche GLut zum rendern bzw. während des Idle-Loops,
beim Verändern der Größe des Fensters und bei Tastendruck aufgerufen werden sollen.
resize ist die Callbackfunktion die vom GLut aufgerufen wird sobald sich die Größe
des Fensters geändert hat.
Nachdem das Verhältnis von neuer Breite zu neuer Höhe berechnet wurde wird OpenGL
mitgeteilt dass nachfolgende Transformationsoperationen auf der Projektionsmatrix
ausgeführt werden sollen und diese mit einer Identitätsmatrix geladen.
Hiernach wird der neue Viewport gesetzt und mit der GLU-Funktion gluPerspective
die Projektionsmatrix gesetzt. Danach wird der Matrixmodus zurückgesetzt.
renderScene ist die Methode die jeden Frame aufgerufen wird um den Inhalt zu zeichnen.
Zunächst wird der aktuelle Buffer geleert, dann wird die aktuelle (Modelview) Matrix
mit der Identitätsmatrix überschrieben. Nun wird mittels der GLU-Funktion gluLookAt
die Kamera positioniert, eine Lichtquelle gesetzt sowie die bekannte Teekanne gezeichnet.
Zu guter Letzt werden die Buffer ausgetauscht.
Nun wollen wir diese Funktionen zusammenführen:
Dies lässt sich nun sehr einfach bewerkstelligen: wir rufen die initGL Methode auf
um OpenGL zu initialisieren, danach nutzen wir die GLut-Funktion glutMainLoop um
in die Hauptschleife des Programms zu kommen.