Die SpielschleifeDie meisten Menschen, die sich mit DirectX beschäftigen, machen dies meist, weil sie ein Computerspiel schreiben wollen. Von daher macht es viel Sinn, den Grundaufbau eines DirectX-Programms auch Spielschleife zu nennen. Doch schauen wir uns doch einfach mal den Grundaufbau näher an: |
Listing 2 - Spielschleife.cs:
|
Die NamensräumeIn den ersten fünf Zeilen werden nur die benötigten Namensräume importiert um späteren Tipporgien vorzubeugen. Die drei System-Einträge dürften jedem bekannt sein, aber es sind auch zwei neue Einträge hinzugekommen (natürlich für DirectX).Der Namensraum Microsoft.DirectX beinhaltet einige wichtige Klassen, die man in nahezu jedem DirectX-Programm benötigt. Darunter fallen zum Beispiel Matrizen und Vektoren. Im Namensraum Microsoft.DirectX.Direct3D sind viele weitere Methoden enthalten, die zur Manipulation von verschiedensten dreidimensionalen Objekten dienen. Bereits in diesem Kapitel werden wir eine erste Klasse aus diesem Namensraum benutzen - und zwar die Klasse Device.
In Zeile 7 wird angegeben, dass unsere Anwendung von der Standard-Windows-Klasse abgeleitet wird. Es gibt dafür also
keine extra Klasse von DirectX. Stattdessen trifft alles zu, was auch für normale WinForms-Anwendungen zutrifft. |
Die Main-MethodeJetzt gehts aber gleich mal zur Main-Methode. In Zeile 24 wird zunächst das Fenster für unsere Anwendung erstellt. Anschließend (Zeile 25) wird die Methode InitializeGraphics() aufgerufen. Diese Funktion dient zum Erstellen einer DirectX-Device-Instanz. Nach dem Aufruf dieser Methode können die ersten Objekte mit Hilfe von DirectX auf den Bildschirm gezaubert werden. Doch mehr dazu im nächsten Unterkapitel.Anschließend wird auch das Fenster angezeigt. Nun kommt aber das wahrscheinlich interessanteste am ganzen Programm. Anstatt Application.Run aufzurufen, wird einfach eine Endlosschleife durchlaufen! Diese wird solange ausgeführt, bis das Fenster der Anwendung geschlossen wird. Innerhalb der Schleife wird die Render()-Methode aufgerufen. Innerhalb dieser wird die gesamte Szene gerendert und anschließend auf dem Bildschirm angezeigt. Danach bekommt die Anwendung noch Zeit die aufgelaufenen Ereignisse mittels Application.DoEvents() zu verarbeiten. Und ganz zum Schluss, nachdem der Anwender das Programm beenden will, wird noch die Methode DisposeGraphics() aufgerufen. Sie dient hauptsächlich zum Aufräumen der Anwendung bevor sie endgültig geschlossen wird. |