Sie sind auf Seite 1von 12

Software-Update zum Buch

3D-Spieleprogrammierung mit
DirectX 9 und C++
von David Scherfgen
Stand: 05.07.2011 / Version 2

Inhalt
Wozu, warum, was ist das? ................................................................................................................. 1
Welche Software brauche ich? .......................................................................................................... 2
Wie kompiliere ich die Programme? .................................................................................................. 2
Ausfhren der kompilierten Programme ........................................................................................... 4
Starten aus Visual Studio heraus ................................................................................................... 4
Starten aus dem Windows Explorer heraus ....................................................................................5
Wie lege ich ein eigenes Projekt an? ...................................................................................................5
Schritt 1: Erzeugen des Projekts .....................................................................................................5
Schritt 2: Konfigurieren des Projekts .............................................................................................. 7
Schritt 3: Projektabhngigkeit definieren ..................................................................................... 10
Schritt 4: Schreiben Sie Ihr Programm! ......................................................................................... 11
Wo sind die TriBase-Tools? .............................................................................................................. 11
Bekannte Probleme .......................................................................................................................... 12
Wo bekomme ich weitere Hilfe? ....................................................................................................... 12

Wozu, warum, was ist das?


Seit das Buch bzw. die letzte Auflage verffentlicht wurde, gibt es neue Versionen von Microsofts
C++-Entwicklungsumgebung (Visual C++) und des DirectX-SDKs. Die TriBase-Engine, die
Beispielprogramme und die Spiele auf der CD zum Buch lassen sich ohne Anpassungen nicht mehr
mit diesen neuen Versionen kompilieren. Dies hat bei vielen Lesern dazu gefhrt, dass sie die
Beispielprogramme nicht ausprobieren konnten. Im Forum zum Buch, welches man unter
http://www.spieleprogrammierer.de findet, kursieren zwar seit vieler Zeit Anleitungen dafr, wie
diese Anpassungen durchzufhren sind, aber nicht jeder findet diese oder mchte die ntige Zeit
dafr aufbringen.

Aus diesem Grund habe ich die Programme von der Buch-CD nun auf den aktuellsten Stand
gebracht, so dass sie sich mit dem aktuellen DirectX-SDK (von Juni 2010) und Visual C++ 2010
kompilieren lassen, und fr alle Leser zum Download bereitgestellt.

Welche Software brauche ich?


Erstens wird Visual C++ 2010 bentigt. Als (Informatik-)Student oder wissenschaftlicher Mitarbeiter
in einem Informatik-Fachbereich bekommt man die Vollversion in der Regel kostenlos, wenn die
Hochschule am MSDNAA-Programm teilnimmt, was meines Wissens nach die meisten tun.
Andernfalls bietet Microsoft eine kostenlose Version (Express Edition) an, die hier
heruntergeladen werden kann: http://www.microsoft.com/visualstudio/en-us/products/2010editions/visual-cpp-express (auf den INSTALL NOW ENGLISH-Button klicken). Den
Installationspfad knnen Sie frei whlen, und die Standardoptionen sollten in Ordnung sein.
Zweitens wird das DirectX-SDK bentigt. Getestet wurde mit der Version von Juni 2010, die
momentan immer noch die aktuellste ist. Zwar lassen sich die Programme auch ohne das SDK
kompilieren, weil ich die allerwichtigsten Dateien bereits integriert habe, aber es fehlen die sehr
ntzliche DirectX-Dokumentation und auch die Beispielprogramme von Microsoft. Auerdem
werden mit dem SDK auch die Laufzeitbibliotheken installiert, die zum Ausfhren bentigt werden.
Also sollte das SDK auf jeden Fall installiert werden. Es kann von hier heruntergeladen werden:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 (auf den
DOWNLOAD-Button klicken). Auch hier knnen Sie den Installationspfad frei whlen und die
Standardoptionen benutzen.

Wie kompiliere ich die Programme?


Wenn Visual C++ 2010 und das DirectX-SDK installiert sind (siehe vorherigen Abschnitt), ffnen Sie
die Visual C++-Projektmappe 3D-Spieleprogrammierung.sln, wenn Sie eine Vollversion von Visual
C++ 2010 besitzen, ansonsten die Datei 3D-Spieleprogrammierung fr VC Express Edition.sln.
Diese Projektmappen enthalten smtliche Projekte aus dem Buch, also die TriBase-Engine inklusive
ihrer Tools, sowie alle Beispielprogramme und die beiden Spiele.

Die Projektmappe wird mit Visual C++ 2010 geffnet. Das Programmfenster sollte dann nach einiger
Ladezeit so oder so hnlich aussehen (mit der Express Edition sieht es etwas anders aus):

Links ist eine Auflistung aller Projekte zu sehen. Die Projekte knnen in der Debug- oder
Release-Konfiguration kompiliert werden, dies kann oben im Men ausgewhlt werden. Debug
ist langsamer, erlaubt aber eine bessere Fehlersuche. Um alle Projekte zu kompilieren, klicken Sie
im Men auf Build und dann Build Solution (ich beziehe mich hier auf die englische Version von
Visual Studio, in der deutschen Version sind diese Meneintrge entsprechend bersetzt), oder
drcken Sie F7. Der Kompiliervorgang wird einige Zeit in Anspruch nehmen. Am Ende sollten dann
42 Projekte hoffentlich fehlerfrei kompiliert worden sein (42 succeeded im Ausgabefenster).

Beim Kompilieren werden .EXE-Dateien fr die Beispielprogramme und Spiele direkt im jeweiligen
Ordner erzeugt, auerdem werden die TriBase-DLLs auch automatisch dorthin kopiert (wenn
mglich, werden dabei feste Verknpfungen (Hard links) erzeugt, so dass die DLL-Kopien keinen
zustzlichen Speicherplatz belegen und sich auch automatisch aktualisieren, wenn die TriBase3

Engine neu kompiliert wurde). So knnen Sie die Programme starten, ohne selbst dafr sorgen zu
mssen, dass Windows die TriBase-DLL findet.

Ausfhren der kompilierten Programme


Die Programme knnen entweder direkt aus Visual Studio heraus ausgefhrt werden oder einfach
durch Starten der entsprechenden .EXE-Dateien im Windows Explorer (natrlich erst, nachdem Sie
die Projekte kompiliert haben siehe vorherigen Abschnitt).

Starten aus Visual Studio heraus


Da die Projektmappe viele Projekte enthlt, muss zuerst ein StartUp-Projekt ausgewhlt werden.
Dieses wird gestartet, wenn Sie F5 bzw. Strg+F5 drcken oder den grnen Pfeil-Button klicken.
Nehmen wir an, Sie wollten das Beispielprogramm 01 Fenster starten. Dann machen Sie einen
Rechtsklick auf das Projekt und whlen Set as StartUp Project aus. Danach erscheint der Name
des Projekts in Fettschrift.
Drcken Sie anschlieend Strg+F5 zum normalen Ausfhren oder F5 zum Debuggen. Alternativ
knnen Sie den Button mit dem grnen Pfeil im Men klicken. Das ausgewhlte Projekt wird nun
ggf. (neu) kompiliert und dann gestartet.

Starten aus dem Windows Explorer heraus


Wenn Sie ein Projekt kompiliert haben, wird im entsprechenden Ordner eine .EXE-Datei erzeugt. In
der Release-Konfiguration heit diese Datei beispielsweise Bsp 0201 Fenster.exe, in der
Debug-Konfiguration heit sie Bsp 0201 Fenster (Debug).exe. Dieses Schema gilt fr alle
Projekte.

Wie lege ich ein eigenes Projekt an?


Im Folgenden beschreibe ich, wie Sie ein eigenes Projekt anlegen knnen, das die TriBase-Engine
benutzt. Am einfachsten geht dies, wenn Sie Ihr Projekt der von mir bereitgestellten Projektmappe
hinzufgen. Dort gibt es bereits einen Ordner namens Eigene Projekte.

Schritt 1: Erzeugen des Projekts


ffnen Sie die von mir bereitgestellte Visual C++-Projektmappe. Wenn Sie eine Vollversion von
Visual C++ besitzen, machen Sie einen Rechtsklick auf den im linken Fenster (Solution Explorer)
erscheinenden Ordner namens Eigene Projekte, und whlen Sie dann Add, New Project....
Wenn Sie mit der Express Edition arbeiten, rechtsklicken Sie im Solution Explorer auf die
Solution/Projektmappe 3D-Spieleprogrammierung fr VC Express Edition, und whlen Sie dann
Add, New Project....

Whlen Sie im erscheinenden Dialog links als Template Visual C++ und Win32 aus. Unten geben
Sie den Projektnamen ein. Unter Location whlen Sie durch Klicken auf den Browse...-Button
das Verzeichnis Eigene Projekte aus, das im selben Verzeichnis liegt wie Beispielprogramme,
Spiele und TriBase. Klicken Sie auf OK.

Es erscheint wieder ein Fenster. Klicken Sie hier links auf Application Settings. Whlen Sie dann
rechts Windows application und Empty project aus.

Klicken Sie auf Finish. Ihr Projekt wurde nun erzeugt, muss aber noch konfiguriert werden.

Schritt 2: Konfigurieren des Projekts


Ihr Projekt sollte nun im Solution Explorer im Ordner Eigene Projekte aufgelistet werden.
Zunchst mssen Sie eine .CPP-Datei zum Projekt hinzufgen, da ansonsten bestimmte
Einstellungen nicht vorgenommen werden knnen. Machen Sie dazu einen Rechtsklick auf Ihr
Projekt, und whlen Sie Add und New Item.... Whlen Sie links Visual C++ und Code, dann
rechts C++ File (.cpp). Unten geben Sie der Datei einen Namen, z.B. Main. Klicken Sie dann auf
OK, und die Datei wird dem Projekt hinzugefgt.

Nun knnen die Einstellungen bearbeitet werden. Machen Sie dazu wieder einen Rechtsklick auf Ihr
Projekt, und whlen Sie Properties. Wir werden nun zunchst einige Einstellungen vornehmen,
die fr die Debug- und die Release-Konfiguration identisch sind. Whlen Sie dazu links oben in
der Liste All Configurations aus. Die erste nderung betrifft den verwendeten Zeichensatz. Die
Einstellung dazu befindet sich unter Configuration Properties und General. Whlen Sie bei
7

Character Set die Einstellung Use Multi-Byte Character Set. Wenn Sie mchten, dass die
kompilierten .EXE-Dateien fr Ihr Projekt direkt im Projektverzeichnis erzeugt werden, dann tragen
Sie oben bei Output Directory den String $(ProjectDir) ein (ohne Anfhrungszeichen).

Wenn Sie mchten, dass die .EXE-Datei der Debug-Konfiguration einen anderen Namen als die
der Release-Konfiguration erhlt, dann wechseln Sie links oben zu Debug (Sie werden zunchst
gefragt, ob Sie die nderungen bernehmen mchten, was Sie mit Ja beantworten). ndern Sie
dann den Wert von Target Name in $(ProjectName) (Debug). Wechseln Sie anschlieend
wieder zu All Configurations.
Als Nchstes klicken Sie links auf C/C++. Tragen Sie dann bei Additional Include Directories
folgendes ein:
$(SolutionDir)TriBase\Include;$(SolutionDir)TriBase\Dependencies\Include

Dann wechseln Sie links zu Linker, und tragen Sie unter Additional Library Directories
folgenden String ein:
$(SolutionDir)TriBase\Lib;$(SolutionDir)TriBase\Dependencies\Lib

Klappen Sie nun den Linker-Eintrag links auf, und whlen Sie Input. Ersetzen Sie den Wert von
Additional Dependencies durch:
TriBase.lib;%(AdditionalDependencies)
Wechseln Sie dann oben links zur Debug-Konfiguration, und ersetzen Sie dort das TriBase.lib
durch TriBaseD.lib, damit die Debug-Version der Bibliothek gelinkt wird. Schalten Sie dann
wieder zurck auf All Configurations.

Die nun folgende letzte Einstellung bewirkt, dass beim Kompilieren Ihres Projekts automatisch die
TriBase-DLL-Datei in das Projektverzeichnis kopiert wird. Klicken Sie dazu links in der Liste auf
Build Events und dann auf Pre-Link Event (es sollte eigentlich auch mit den beiden anderen
Mglichkeiten funktionieren). Bei Command Line geben Sie ein:
"$(SolutionDir)CopyDLL.bat" "$(SolutionDir)TriBase\Bin\TriBase.dll" "$(ProjectDir)TriBase.dll"

Tragen Sie, wenn Sie mchten, unter Description ein: Kopiere TriBase-DLL in das
Programmverzeichnis .... Wechseln Sie nun wieder zur Debug-Konfiguration, und ersetzen Sie
dort im Command Line-String zweimal TriBase.dll durch TriBaseD.dll.

Klicken Sie nun auf OK, um das Fenster zu schlieen.


Hier sehen Sie noch einmal eine bersicht der notwendigen Anpassungen:
Wo?

Einstellung

Wert fr Debug

Wert fr Release

General

Character Set

Use Multi-Byte Character Set

Output Directory

$(ProjectDir)

Target Name

$(ProjectName) (Debug)

C/C++

Additional Include
Directories

$(SolutionDir)TriBase\Include;
$(SolutionDir)TriBase\Dependencies\Include

Linker /
General

Additional Library
Directories

$(SolutionDir)TriBase\Lib;
$(SolutionDir)TriBase\Dependencies\Lib

Linker / Input

Additional
Dependencies

TriBaseD.lib;
%(AdditionalDependencies)

TriBase.lib;
%(AdditionalDependencies)

Build Events /
Pre-Link Event

Command Line

"$(SolutionDir)CopyDLL.bat"
"$(SolutionDir)TriBase\Bin\TriBaseD.dll"
"$(ProjectDir)TriBaseD.dll"

"$(SolutionDir)CopyDLL.bat"
"$(SolutionDir)TriBase\Bin\TriBase.dll"
"$(ProjectDir)TriBase.dll"

Description

Kopiere TriBase-DLL in das Programmverzeichnis ...

$(ProjectName)

Schritt 3: Projektabhngigkeit definieren


Nun werden wir Visual Studio mitteilen, dass Ihr Projekt von der TriBase-Engine abhngig ist. Dies
fhrt beispielsweise dazu, dass die Engine bei Bedarf automatisch kompiliert wird, wenn Sie Ihr
Projekt kompilieren. Klicken Sie dazu wieder mit rechts auf Ihr Projekt, und whlen Sie dann
Project Dependencies.... Scrollen Sie ganz herunter, und setzen Sie das Hkchen beim Projekt
TriBase. Klicken Sie dann auf OK.

10

Schritt 4: Schreiben Sie Ihr Programm!


Nun knnen Sie Ihr Programm schreiben. Um zu testen, ob Sie alles richtig gemacht haben, knnen
Sie folgenden Code in Ihre .CPP-Datei einfgen:
#include <TriBase.h>
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
char* pcCommandLine,
int iShowCommand)
{
tbInit();
tbConfig Config;
tbDoConfigDialog(&Config);
tbExit();
return 0;
}

Whlen Sie dann Ihr Projekt als StartUp Project, und kompilieren Sie es mit F7. Mit Strg+F5 oder
F5 starten Sie das Programm. Es sollte der TriBase-Konfigurationsdialog erscheinen (aber nichts
weiter passieren).

Wo sind die TriBase-Tools?


Wenn Sie die Tools der TriBase-Engine kompilieren (sie befinden sich genau wie die
Beispielprogramme, die Spiele und die Engine selbst in der Visual C++-Projektmappe), dann werden
die .EXE-Dateien im Ordner TriBase\Bin erzeugt. Dort liegen auch die TriBase-DLLs.

11

Bekannte Probleme
Hier werden Probleme gesammelt, die bereits bekannt sind. Sie mssen diese Probleme also nicht
im Forum melden. Wenn Sie jedoch eine Idee haben, wie sie gelst werden knnen, dann freuen wir
uns natrlich darber, wenn Sie uns diese mitteilen.
Bekannte Probleme:

Die Klasse tbVideo zum Abspielen von Videos funktioniert nicht richtig, wenn V-Sync
eingeschaltet ist. Die Videos ruckeln dann sehr stark. Das Problem muss noch genauer
untersucht werden. Beim Abschalten von V-Sync werden die Videos jedoch flssig
abgespielt.

Wo bekomme ich weitere Hilfe?


Wenn etwas nicht funktioniert, besuchen Sie das Forum zum Buch unter
http://www.spieleprogrammierer.de. Suchen Sie dort zunchst nach einem Eintrag, der Ihrem
Problem hnlich ist, um doppelte Fragen zu vermeiden. Fhrt dies nicht zum Erfolg, verfassen Sie
eine mglichst detaillierte Problembeschreibung.

Viel Spa und Erfolg!


David Scherfgen

12