Christian Rousselle
Spieleprogrammierung M.Directx
5 Angebote ab € 1,00 €
Christian Rousselle
Spieleprogrammierung M.Directx
- Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Traumberuf Spieleprogrammierer - jetzt sind Sie nur noch wenige Schritte davon entfernt. Dieses Buch vermittelt Ihnen die Grundlagen der modernen Spieleprogrammierung anhand unter C++ und mit DirectX. Dabei erläutert der Autor nicht nur programmiertechnische Lösungen, sondern geht auch auf die Konzeptionierung und Realisierung eines solchen Projekts ein. Am Ende werden Sie Ihr erstes selbst programmiertes Spiel in Händen halten! Auf CD: Alle nötigen Compiler etc., der Quellcode der Beispiele.
Traumberuf Spieleprogrammierer - jetzt sind Sie nur noch wenige Schritte davon entfernt. Dieses Buch vermittelt Ihnen die Grundlagen der modernen Spieleprogrammierung anhand unter C++ und mit DirectX. Dabei erläutert der Autor nicht nur programmiertechnische Lösungen, sondern geht auch auf die Konzeptionierung und Realisierung eines solchen Projekts ein. Am Ende werden Sie Ihr erstes selbst programmiertes Spiel in Händen halten! Auf CD: Alle nötigen Compiler etc., der Quellcode der Beispiele.
Produktdetails
- Produktdetails
- Verlag: AIG
- Erscheinungstermin: 29. Juni 2001
- ISBN-13: 9783827259776
- ISBN-10: 3827259770
- Artikelnr.: 23931883
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
- Verlag: AIG
- Erscheinungstermin: 29. Juni 2001
- ISBN-13: 9783827259776
- ISBN-10: 3827259770
- Artikelnr.: 23931883
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
Vorwort 15
Einleitung 17
1 Grundlagen 19
1.1 Plattformen 19
1.2 Programmiersprachen 20
1.2.1 Compiler und Interpreter 20
1.2.2 Syntax und Semantik 21
1.2.3 Werkzeuge 21
1.3 Einstieg in C++ 22
1.3.1 Geschichte von C++ 22
1.3.2 Warum gerade C++ ? 23
1.3.3 Neuerungen in C++ 23
1.4 Visual C++ 25
1.4.1 Installation von Visual C++ 25
1.5 Installation der Beispielprogramme 28
2 Das erste Programm 29
2.1 HelloWorld 34
3 Konstanten und Variablen 41
3.1 Zeichenkonstanten 41
3.2 Sonderzeichen 43
3.3 Zeichenkettenkonstanten 43
3.4 Numerische Konstanten 44
3.5 Fließkommakonstanten 45
3.6 Datentypen in C++ 46
3.7 Symbolische Konstanten 47
3.8 Variablen 49
3.9 Globale und lokale Variablen 50
3.10 Zusätze für Konstanten und Variablen 52
3.11 Konstanten mit #define definieren 53
3.12 Definition neuer Typen 54
4 Anweisungen und Ausdrücke 57
4.1 cin 57
4.2 Anweisungen 58
4.3 Ausdrücke 59
4.4 Operatoren 60
4.4.1 Der Zuweisungsoperator 60
4.4.2 Arithmetische Operatoren 61
4.4.3 Inkrement- und Dekrementoperatoren 62
4.4.4 Bitoperatoren 65
4.4.5 Rangfolge der Operatoren und Klammersetzung 70
4.5 Kontrollstrukturen 71
4.5.1 Boolesche Werte 71
4.5.2 Logische Operatoren 72
4.5.3 Vergleichsoperatoren 73
4.5.4 Fallunterscheidung mit if 74
4.5.5 Fallunterscheidung mit switch 77
4.5.6 Die while-Schleife 79
4.5.7 Die do-while-Schleife 80
4.5.8 Die for-Schleife 81
5 Funktionen 85
5.1 Funktionen deklarieren 86
5.2 Funktionen definieren 87
5.3 Funktionsaufruf 89
5.4 Parameter und Rückgabewerte 90
5.5 Verschachtelung von Funktionsaufrufen 95
5.6 Variablen und Funktionen 96
5.7 Standardparameter 99
5.8 Inline-Funktionen 101
5.9 Funktionen überladen 102
5.10 Im Hintergrund 104
5.11 Rekursionen 105
6 Zeiger 109
6.1 Der Adressoperator 109
6.2 Zeiger deklarieren 111
6.3 Zeiger dereferenzieren 114
6.4 Zeiger und Funktionen 117
6.5 Arrays 119
6.5.1 Statische Arrays 119
6.5.2 Strings 127
6.5.3 Mehrdimensionale Felder 131
6.6 Strukturen 132
6.7 Dynamische Speicherverwaltung 135
6.7.1 Speicherbereiche 136
6.7.2 new und delete 137
7 Der Debugger 145
7.1 Schrittweise Programmausführung 147
7.2 Überwachen von Variablen 149
7.3 Überwachung 149
7.4 Aufrufliste 150
7.5 Speicheransicht 150
7.6 Register 151
7.7 Disassemblierung 151
7.8 Setzen von Breakpoints 151
7.9 Debug und Release 152
8 Ausgewählte Themen 155
8.1 Werteübergabe an die main-Funktion 155
8.2 Formatierte Ausgabe mit printf 157
8.3 Dateiarbeit 161
8.3.1 Arbeit mit Textdateien 161
8.3.2 Arbeit mit Binärdateien 165
8.4 type-cast 167
8.5 Dynamische Datenstrukturen 168
8.6 Ein Programm in Module aufteilen 176
9 Objektorientierte Programmierung 179
9.1 Objekte 180
9.2 Klassen 180
9.2.1 Objekte instantieren 182
9.2.2 Zugriffsbeschränkungen 183
9.3 Konstruktoren und Destruktoren 185
9.4 Ein Beispiel zur objektorientierten Programmierung 188
9.4.1 Eine Funktion zum Löschen von Knoten 195
10 MSDN - das Hilfesystem 201
11 Windows-Grundlagen 205
11.1 Ereignisgesteuerte Programmierung 205
11.2 Windows-Datentypen 206
11.3 Ungarische Notation 207
11.4 Handle 208
11.5 Ein Projekt für ein Windows-Programm 209
11.6 WinMain 210
11.7 Fenster 211
11.7.1 Fensterklassen 211
11.8 Nachrichten 216
11.8.1 Nachrichten versenden 220
11.9 Hello Windows 221
12 Das GDI 225
12.1 Device Context 225
12.1.1 Pixel 226
12.2 Die Nachricht WM_PAINT 227
12.2.1 GDI-Funktionen zur Textausgabe 228
12.2.2 Texte farbig darstellen 229
12.2.3 GDI-Funktionen zur Grafikausgabe 231
12.3 Maus-Nachrichten 233
12.3.1 Invalidate 234
13 Vererbung 239
13.1 Klassen für geometrische Objekte 239
13.1.1 Rechtecke 240
13.1.2 Kreise 242
13.1.3 Dreiecke 243
13.2 Eine Basisklasse erstellen 245
13.2.1 Ableitung 247
13.2.2 public, private und protected 249
13.2.3 Konstruktoren und Destruktoren 250
13.2.4 Virtuelle Methoden 251
13.2.5 Abstrakte Basisklassen 253
13.3 Verwaltung der Objekte in einer Liste 253
14 DirectX 259
14.1 Was ist DirectX ? 259
14.1.1 SDK und Laufzeitumgebung 260
14.2 Die Geschichte von DirectX 260
14.3 Die Architektur von DirectX 262
14.3.1 DirectDraw 262
14.3.2 Direct3D 263
14.3.3 DirectSound 264
14.3.4 DirectMusic 264
14.3.5 DirectInput 264
14.3.6 DirectPlay 264
14.3.7 DirectSetup 264
14.4 Neuerungen in DirectX 8 265
14.4.1 Integration von Direct3D und DirectDraw 265
14.4.2 Zusammenfassung von DirectMusic und DirectSound 265
14.4.3 Neuerungen an DirectInput 265
14.4.4 Neuerungen an DirectPlay 266
14.4.5 DirectShow 266
14.5 Abwärtskompatibilität 266
14.6 OpenGL - die Alternative 267
15 Installation von DirectX 269
16 Einführung in COM 273
16.1 COM und DirectX 274
16.2 Schnittstellen abfragen 275
17 DirectDraw 277
17.1 Hintergrund 277
17.1.1 Grafik- und Hauptspeicher 279
17.2 Der Einsatz von DirectDraw 280
17.2.1 Vorbereitungen 280
17.2.2 Ein DirectDraw-Objekt anlegen 282
17.2.3 Die Kooperationsebene festlegen 284
17.2.4 Die primäre Oberfläche 286
17.2.5 Clipper 288
17.2.6 Blitting 290
17.2.7 Die Funktion Error 296
17.2.8 Freigeben von Objekten 297
17.2.9 Das Beispielprogramm 298
17.3 Eine Fullscreen-Anwendung 300
17.4 Nutzung von GDI-Funktionen 301
17.5 Bestimmung der Farbe 302
17.6 Zugriff auf weitere Grafikkarten 305
18 Die Spielschleife 309
18.1 Erzeugung einer Spielschleife 309
18.2 Framerate 312
18.3 Begrenzung der Framerate 312
19 Oberflächen und Sprites 317
19.1 Oberflächenarten 317
19.1.1 Oberflächen anlegen 318
19.1.2 Eigenschaften einer Oberfläche abfragen 321
19.1.3 Oberflächen füllen und kopieren 321
19.2 Bitmaps in Oberflächen laden 322
19.3 Sprites 327
19.3.1 Oberflächen für Sprites erzeugen 328
19.3.2 Die Bildschirmbegrenzungen beachten 331
19.4 Doppelpufferung 333
19.5 Eine DirectDraw-Klasse 339
19.6 Eine Sprite-Klasse 340
19.6.1 Colorkeys 342
19.7 Sprites animieren 344
19.7.1 Erweiterung der Spriteklasse 345
19.8 Zugriff auf Pixel in einer Oberflächen 348
19.8.1 Ein Sternenfeld 350
19.9 Scrolling 353
20 DirectInput 357
20.1 Vorteile von DirectInput 357
20.2 Der Einsatz von DirectInput 358
20.3 Behandlung von Tastatureingaben 359
20.4 Behandlung von Mauseingaben 363
20.4.1 Polling 363
20.4.2 Ereigniserzeugung 366
20.5 Behandlung des Joysticks 368
20.6 Force Feedback 372
20.7 Action Mapping 375
20.8 Eine Klasse für DirectInput 376
21 DirectX Audio 381
21.1 Grundlagen 381
21.1.1 Performance, Loader und Segmente 382
21.2 Initialisieren von DirectX Audio 383
21.3 Laden von Musik- und Sounddateien 384
21.4 Musik-Dateien abspielen 386
21.5 DirectX Audio beenden 387
21.6 Eine Klasse für DirectX Audio 388
22 Ein Spiel 391
22.1 Die Idee 391
22.2 Das Konzept 391
22.3 Die Umsetzung 392
22.4 Kommerzielle Spiele 392
22.5 Das Spiel 393
22.5.1 Idee 393
22.5.2 Konzept 393
22.5.3 Umsetzung 393
22.5.4 Hintergrundgrafik 394
22.5.5 Gegner 394
22.5.6 Spieler 396
22.5.7 Waffen 396
22.5.8 Kollisionserkennung 396
22.5.9 Musik und Soundeffekte 398
22.5.10 Punktewertung 399
23 3-D-Konzepte 401
23.1 Koordinatensysteme 401
23.2 Punkte und Vektoren 402
23.3 Objekte 403
23.3.1 Darstellung von Objekten 405
23.3.2 Schattierung 405
23.3.3 Beleuchtung 406
23.3.4 Materialien 408
23.3.5 Texturen 409
23.3.6 Z-Buffer 409
23.4 Objekte transformieren 410
23.5 Die Kamera 410
23.6 Verschiedene Räume 411
24 DirectX Graphics 413
24.1 Direct3D initialisieren 413
24.2 Einfache Objekte anzeigen 418
24.2.1 Flexible Vertex Format 418
24.2.2 Ein Dreieck darstellen 419
24.2.3 Vertex Buffer 421
24.2.4 Einen Würfel hinzufügen 426
24.2.5 Objekte rotieren und verschieben 429
24.3 Einen Z-Buffer hinzufügen 430
24.4 Texturen hinzufügen 431
24.5 Licht hinzufügen 434
24.6 Die Kamera bewegen 436
Anhang A: Die Buch-CD 439
Anhang B: Buchempfehlungen 441
Anhang C: Internetadressen rund um die Spieleprogrammierung 443
Stichwortverzeichnis 445
Einleitung 17
1 Grundlagen 19
1.1 Plattformen 19
1.2 Programmiersprachen 20
1.2.1 Compiler und Interpreter 20
1.2.2 Syntax und Semantik 21
1.2.3 Werkzeuge 21
1.3 Einstieg in C++ 22
1.3.1 Geschichte von C++ 22
1.3.2 Warum gerade C++ ? 23
1.3.3 Neuerungen in C++ 23
1.4 Visual C++ 25
1.4.1 Installation von Visual C++ 25
1.5 Installation der Beispielprogramme 28
2 Das erste Programm 29
2.1 HelloWorld 34
3 Konstanten und Variablen 41
3.1 Zeichenkonstanten 41
3.2 Sonderzeichen 43
3.3 Zeichenkettenkonstanten 43
3.4 Numerische Konstanten 44
3.5 Fließkommakonstanten 45
3.6 Datentypen in C++ 46
3.7 Symbolische Konstanten 47
3.8 Variablen 49
3.9 Globale und lokale Variablen 50
3.10 Zusätze für Konstanten und Variablen 52
3.11 Konstanten mit #define definieren 53
3.12 Definition neuer Typen 54
4 Anweisungen und Ausdrücke 57
4.1 cin 57
4.2 Anweisungen 58
4.3 Ausdrücke 59
4.4 Operatoren 60
4.4.1 Der Zuweisungsoperator 60
4.4.2 Arithmetische Operatoren 61
4.4.3 Inkrement- und Dekrementoperatoren 62
4.4.4 Bitoperatoren 65
4.4.5 Rangfolge der Operatoren und Klammersetzung 70
4.5 Kontrollstrukturen 71
4.5.1 Boolesche Werte 71
4.5.2 Logische Operatoren 72
4.5.3 Vergleichsoperatoren 73
4.5.4 Fallunterscheidung mit if 74
4.5.5 Fallunterscheidung mit switch 77
4.5.6 Die while-Schleife 79
4.5.7 Die do-while-Schleife 80
4.5.8 Die for-Schleife 81
5 Funktionen 85
5.1 Funktionen deklarieren 86
5.2 Funktionen definieren 87
5.3 Funktionsaufruf 89
5.4 Parameter und Rückgabewerte 90
5.5 Verschachtelung von Funktionsaufrufen 95
5.6 Variablen und Funktionen 96
5.7 Standardparameter 99
5.8 Inline-Funktionen 101
5.9 Funktionen überladen 102
5.10 Im Hintergrund 104
5.11 Rekursionen 105
6 Zeiger 109
6.1 Der Adressoperator 109
6.2 Zeiger deklarieren 111
6.3 Zeiger dereferenzieren 114
6.4 Zeiger und Funktionen 117
6.5 Arrays 119
6.5.1 Statische Arrays 119
6.5.2 Strings 127
6.5.3 Mehrdimensionale Felder 131
6.6 Strukturen 132
6.7 Dynamische Speicherverwaltung 135
6.7.1 Speicherbereiche 136
6.7.2 new und delete 137
7 Der Debugger 145
7.1 Schrittweise Programmausführung 147
7.2 Überwachen von Variablen 149
7.3 Überwachung 149
7.4 Aufrufliste 150
7.5 Speicheransicht 150
7.6 Register 151
7.7 Disassemblierung 151
7.8 Setzen von Breakpoints 151
7.9 Debug und Release 152
8 Ausgewählte Themen 155
8.1 Werteübergabe an die main-Funktion 155
8.2 Formatierte Ausgabe mit printf 157
8.3 Dateiarbeit 161
8.3.1 Arbeit mit Textdateien 161
8.3.2 Arbeit mit Binärdateien 165
8.4 type-cast 167
8.5 Dynamische Datenstrukturen 168
8.6 Ein Programm in Module aufteilen 176
9 Objektorientierte Programmierung 179
9.1 Objekte 180
9.2 Klassen 180
9.2.1 Objekte instantieren 182
9.2.2 Zugriffsbeschränkungen 183
9.3 Konstruktoren und Destruktoren 185
9.4 Ein Beispiel zur objektorientierten Programmierung 188
9.4.1 Eine Funktion zum Löschen von Knoten 195
10 MSDN - das Hilfesystem 201
11 Windows-Grundlagen 205
11.1 Ereignisgesteuerte Programmierung 205
11.2 Windows-Datentypen 206
11.3 Ungarische Notation 207
11.4 Handle 208
11.5 Ein Projekt für ein Windows-Programm 209
11.6 WinMain 210
11.7 Fenster 211
11.7.1 Fensterklassen 211
11.8 Nachrichten 216
11.8.1 Nachrichten versenden 220
11.9 Hello Windows 221
12 Das GDI 225
12.1 Device Context 225
12.1.1 Pixel 226
12.2 Die Nachricht WM_PAINT 227
12.2.1 GDI-Funktionen zur Textausgabe 228
12.2.2 Texte farbig darstellen 229
12.2.3 GDI-Funktionen zur Grafikausgabe 231
12.3 Maus-Nachrichten 233
12.3.1 Invalidate 234
13 Vererbung 239
13.1 Klassen für geometrische Objekte 239
13.1.1 Rechtecke 240
13.1.2 Kreise 242
13.1.3 Dreiecke 243
13.2 Eine Basisklasse erstellen 245
13.2.1 Ableitung 247
13.2.2 public, private und protected 249
13.2.3 Konstruktoren und Destruktoren 250
13.2.4 Virtuelle Methoden 251
13.2.5 Abstrakte Basisklassen 253
13.3 Verwaltung der Objekte in einer Liste 253
14 DirectX 259
14.1 Was ist DirectX ? 259
14.1.1 SDK und Laufzeitumgebung 260
14.2 Die Geschichte von DirectX 260
14.3 Die Architektur von DirectX 262
14.3.1 DirectDraw 262
14.3.2 Direct3D 263
14.3.3 DirectSound 264
14.3.4 DirectMusic 264
14.3.5 DirectInput 264
14.3.6 DirectPlay 264
14.3.7 DirectSetup 264
14.4 Neuerungen in DirectX 8 265
14.4.1 Integration von Direct3D und DirectDraw 265
14.4.2 Zusammenfassung von DirectMusic und DirectSound 265
14.4.3 Neuerungen an DirectInput 265
14.4.4 Neuerungen an DirectPlay 266
14.4.5 DirectShow 266
14.5 Abwärtskompatibilität 266
14.6 OpenGL - die Alternative 267
15 Installation von DirectX 269
16 Einführung in COM 273
16.1 COM und DirectX 274
16.2 Schnittstellen abfragen 275
17 DirectDraw 277
17.1 Hintergrund 277
17.1.1 Grafik- und Hauptspeicher 279
17.2 Der Einsatz von DirectDraw 280
17.2.1 Vorbereitungen 280
17.2.2 Ein DirectDraw-Objekt anlegen 282
17.2.3 Die Kooperationsebene festlegen 284
17.2.4 Die primäre Oberfläche 286
17.2.5 Clipper 288
17.2.6 Blitting 290
17.2.7 Die Funktion Error 296
17.2.8 Freigeben von Objekten 297
17.2.9 Das Beispielprogramm 298
17.3 Eine Fullscreen-Anwendung 300
17.4 Nutzung von GDI-Funktionen 301
17.5 Bestimmung der Farbe 302
17.6 Zugriff auf weitere Grafikkarten 305
18 Die Spielschleife 309
18.1 Erzeugung einer Spielschleife 309
18.2 Framerate 312
18.3 Begrenzung der Framerate 312
19 Oberflächen und Sprites 317
19.1 Oberflächenarten 317
19.1.1 Oberflächen anlegen 318
19.1.2 Eigenschaften einer Oberfläche abfragen 321
19.1.3 Oberflächen füllen und kopieren 321
19.2 Bitmaps in Oberflächen laden 322
19.3 Sprites 327
19.3.1 Oberflächen für Sprites erzeugen 328
19.3.2 Die Bildschirmbegrenzungen beachten 331
19.4 Doppelpufferung 333
19.5 Eine DirectDraw-Klasse 339
19.6 Eine Sprite-Klasse 340
19.6.1 Colorkeys 342
19.7 Sprites animieren 344
19.7.1 Erweiterung der Spriteklasse 345
19.8 Zugriff auf Pixel in einer Oberflächen 348
19.8.1 Ein Sternenfeld 350
19.9 Scrolling 353
20 DirectInput 357
20.1 Vorteile von DirectInput 357
20.2 Der Einsatz von DirectInput 358
20.3 Behandlung von Tastatureingaben 359
20.4 Behandlung von Mauseingaben 363
20.4.1 Polling 363
20.4.2 Ereigniserzeugung 366
20.5 Behandlung des Joysticks 368
20.6 Force Feedback 372
20.7 Action Mapping 375
20.8 Eine Klasse für DirectInput 376
21 DirectX Audio 381
21.1 Grundlagen 381
21.1.1 Performance, Loader und Segmente 382
21.2 Initialisieren von DirectX Audio 383
21.3 Laden von Musik- und Sounddateien 384
21.4 Musik-Dateien abspielen 386
21.5 DirectX Audio beenden 387
21.6 Eine Klasse für DirectX Audio 388
22 Ein Spiel 391
22.1 Die Idee 391
22.2 Das Konzept 391
22.3 Die Umsetzung 392
22.4 Kommerzielle Spiele 392
22.5 Das Spiel 393
22.5.1 Idee 393
22.5.2 Konzept 393
22.5.3 Umsetzung 393
22.5.4 Hintergrundgrafik 394
22.5.5 Gegner 394
22.5.6 Spieler 396
22.5.7 Waffen 396
22.5.8 Kollisionserkennung 396
22.5.9 Musik und Soundeffekte 398
22.5.10 Punktewertung 399
23 3-D-Konzepte 401
23.1 Koordinatensysteme 401
23.2 Punkte und Vektoren 402
23.3 Objekte 403
23.3.1 Darstellung von Objekten 405
23.3.2 Schattierung 405
23.3.3 Beleuchtung 406
23.3.4 Materialien 408
23.3.5 Texturen 409
23.3.6 Z-Buffer 409
23.4 Objekte transformieren 410
23.5 Die Kamera 410
23.6 Verschiedene Räume 411
24 DirectX Graphics 413
24.1 Direct3D initialisieren 413
24.2 Einfache Objekte anzeigen 418
24.2.1 Flexible Vertex Format 418
24.2.2 Ein Dreieck darstellen 419
24.2.3 Vertex Buffer 421
24.2.4 Einen Würfel hinzufügen 426
24.2.5 Objekte rotieren und verschieben 429
24.3 Einen Z-Buffer hinzufügen 430
24.4 Texturen hinzufügen 431
24.5 Licht hinzufügen 434
24.6 Die Kamera bewegen 436
Anhang A: Die Buch-CD 439
Anhang B: Buchempfehlungen 441
Anhang C: Internetadressen rund um die Spieleprogrammierung 443
Stichwortverzeichnis 445
Vorwort 15
Einleitung 17
1 Grundlagen 19
1.1 Plattformen 19
1.2 Programmiersprachen 20
1.2.1 Compiler und Interpreter 20
1.2.2 Syntax und Semantik 21
1.2.3 Werkzeuge 21
1.3 Einstieg in C++ 22
1.3.1 Geschichte von C++ 22
1.3.2 Warum gerade C++ ? 23
1.3.3 Neuerungen in C++ 23
1.4 Visual C++ 25
1.4.1 Installation von Visual C++ 25
1.5 Installation der Beispielprogramme 28
2 Das erste Programm 29
2.1 HelloWorld 34
3 Konstanten und Variablen 41
3.1 Zeichenkonstanten 41
3.2 Sonderzeichen 43
3.3 Zeichenkettenkonstanten 43
3.4 Numerische Konstanten 44
3.5 Fließkommakonstanten 45
3.6 Datentypen in C++ 46
3.7 Symbolische Konstanten 47
3.8 Variablen 49
3.9 Globale und lokale Variablen 50
3.10 Zusätze für Konstanten und Variablen 52
3.11 Konstanten mit #define definieren 53
3.12 Definition neuer Typen 54
4 Anweisungen und Ausdrücke 57
4.1 cin 57
4.2 Anweisungen 58
4.3 Ausdrücke 59
4.4 Operatoren 60
4.4.1 Der Zuweisungsoperator 60
4.4.2 Arithmetische Operatoren 61
4.4.3 Inkrement- und Dekrementoperatoren 62
4.4.4 Bitoperatoren 65
4.4.5 Rangfolge der Operatoren und Klammersetzung 70
4.5 Kontrollstrukturen 71
4.5.1 Boolesche Werte 71
4.5.2 Logische Operatoren 72
4.5.3 Vergleichsoperatoren 73
4.5.4 Fallunterscheidung mit if 74
4.5.5 Fallunterscheidung mit switch 77
4.5.6 Die while-Schleife 79
4.5.7 Die do-while-Schleife 80
4.5.8 Die for-Schleife 81
5 Funktionen 85
5.1 Funktionen deklarieren 86
5.2 Funktionen definieren 87
5.3 Funktionsaufruf 89
5.4 Parameter und Rückgabewerte 90
5.5 Verschachtelung von Funktionsaufrufen 95
5.6 Variablen und Funktionen 96
5.7 Standardparameter 99
5.8 Inline-Funktionen 101
5.9 Funktionen überladen 102
5.10 Im Hintergrund 104
5.11 Rekursionen 105
6 Zeiger 109
6.1 Der Adressoperator 109
6.2 Zeiger deklarieren 111
6.3 Zeiger dereferenzieren 114
6.4 Zeiger und Funktionen 117
6.5 Arrays 119
6.5.1 Statische Arrays 119
6.5.2 Strings 127
6.5.3 Mehrdimensionale Felder 131
6.6 Strukturen 132
6.7 Dynamische Speicherverwaltung 135
6.7.1 Speicherbereiche 136
6.7.2 new und delete 137
7 Der Debugger 145
7.1 Schrittweise Programmausführung 147
7.2 Überwachen von Variablen 149
7.3 Überwachung 149
7.4 Aufrufliste 150
7.5 Speicheransicht 150
7.6 Register 151
7.7 Disassemblierung 151
7.8 Setzen von Breakpoints 151
7.9 Debug und Release 152
8 Ausgewählte Themen 155
8.1 Werteübergabe an die main-Funktion 155
8.2 Formatierte Ausgabe mit printf 157
8.3 Dateiarbeit 161
8.3.1 Arbeit mit Textdateien 161
8.3.2 Arbeit mit Binärdateien 165
8.4 type-cast 167
8.5 Dynamische Datenstrukturen 168
8.6 Ein Programm in Module aufteilen 176
9 Objektorientierte Programmierung 179
9.1 Objekte 180
9.2 Klassen 180
9.2.1 Objekte instantieren 182
9.2.2 Zugriffsbeschränkungen 183
9.3 Konstruktoren und Destruktoren 185
9.4 Ein Beispiel zur objektorientierten Programmierung 188
9.4.1 Eine Funktion zum Löschen von Knoten 195
10 MSDN - das Hilfesystem 201
11 Windows-Grundlagen 205
11.1 Ereignisgesteuerte Programmierung 205
11.2 Windows-Datentypen 206
11.3 Ungarische Notation 207
11.4 Handle 208
11.5 Ein Projekt für ein Windows-Programm 209
11.6 WinMain 210
11.7 Fenster 211
11.7.1 Fensterklassen 211
11.8 Nachrichten 216
11.8.1 Nachrichten versenden 220
11.9 Hello Windows 221
12 Das GDI 225
12.1 Device Context 225
12.1.1 Pixel 226
12.2 Die Nachricht WM_PAINT 227
12.2.1 GDI-Funktionen zur Textausgabe 228
12.2.2 Texte farbig darstellen 229
12.2.3 GDI-Funktionen zur Grafikausgabe 231
12.3 Maus-Nachrichten 233
12.3.1 Invalidate 234
13 Vererbung 239
13.1 Klassen für geometrische Objekte 239
13.1.1 Rechtecke 240
13.1.2 Kreise 242
13.1.3 Dreiecke 243
13.2 Eine Basisklasse erstellen 245
13.2.1 Ableitung 247
13.2.2 public, private und protected 249
13.2.3 Konstruktoren und Destruktoren 250
13.2.4 Virtuelle Methoden 251
13.2.5 Abstrakte Basisklassen 253
13.3 Verwaltung der Objekte in einer Liste 253
14 DirectX 259
14.1 Was ist DirectX ? 259
14.1.1 SDK und Laufzeitumgebung 260
14.2 Die Geschichte von DirectX 260
14.3 Die Architektur von DirectX 262
14.3.1 DirectDraw 262
14.3.2 Direct3D 263
14.3.3 DirectSound 264
14.3.4 DirectMusic 264
14.3.5 DirectInput 264
14.3.6 DirectPlay 264
14.3.7 DirectSetup 264
14.4 Neuerungen in DirectX 8 265
14.4.1 Integration von Direct3D und DirectDraw 265
14.4.2 Zusammenfassung von DirectMusic und DirectSound 265
14.4.3 Neuerungen an DirectInput 265
14.4.4 Neuerungen an DirectPlay 266
14.4.5 DirectShow 266
14.5 Abwärtskompatibilität 266
14.6 OpenGL - die Alternative 267
15 Installation von DirectX 269
16 Einführung in COM 273
16.1 COM und DirectX 274
16.2 Schnittstellen abfragen 275
17 DirectDraw 277
17.1 Hintergrund 277
17.1.1 Grafik- und Hauptspeicher 279
17.2 Der Einsatz von DirectDraw 280
17.2.1 Vorbereitungen 280
17.2.2 Ein DirectDraw-Objekt anlegen 282
17.2.3 Die Kooperationsebene festlegen 284
17.2.4 Die primäre Oberfläche 286
17.2.5 Clipper 288
17.2.6 Blitting 290
17.2.7 Die Funktion Error 296
17.2.8 Freigeben von Objekten 297
17.2.9 Das Beispielprogramm 298
17.3 Eine Fullscreen-Anwendung 300
17.4 Nutzung von GDI-Funktionen 301
17.5 Bestimmung der Farbe 302
17.6 Zugriff auf weitere Grafikkarten 305
18 Die Spielschleife 309
18.1 Erzeugung einer Spielschleife 309
18.2 Framerate 312
18.3 Begrenzung der Framerate 312
19 Oberflächen und Sprites 317
19.1 Oberflächenarten 317
19.1.1 Oberflächen anlegen 318
19.1.2 Eigenschaften einer Oberfläche abfragen 321
19.1.3 Oberflächen füllen und kopieren 321
19.2 Bitmaps in Oberflächen laden 322
19.3 Sprites 327
19.3.1 Oberflächen für Sprites erzeugen 328
19.3.2 Die Bildschirmbegrenzungen beachten 331
19.4 Doppelpufferung 333
19.5 Eine DirectDraw-Klasse 339
19.6 Eine Sprite-Klasse 340
19.6.1 Colorkeys 342
19.7 Sprites animieren 344
19.7.1 Erweiterung der Spriteklasse 345
19.8 Zugriff auf Pixel in einer Oberflächen 348
19.8.1 Ein Sternenfeld 350
19.9 Scrolling 353
20 DirectInput 357
20.1 Vorteile von DirectInput 357
20.2 Der Einsatz von DirectInput 358
20.3 Behandlung von Tastatureingaben 359
20.4 Behandlung von Mauseingaben 363
20.4.1 Polling 363
20.4.2 Ereigniserzeugung 366
20.5 Behandlung des Joysticks 368
20.6 Force Feedback 372
20.7 Action Mapping 375
20.8 Eine Klasse für DirectInput 376
21 DirectX Audio 381
21.1 Grundlagen 381
21.1.1 Performance, Loader und Segmente 382
21.2 Initialisieren von DirectX Audio 383
21.3 Laden von Musik- und Sounddateien 384
21.4 Musik-Dateien abspielen 386
21.5 DirectX Audio beenden 387
21.6 Eine Klasse für DirectX Audio 388
22 Ein Spiel 391
22.1 Die Idee 391
22.2 Das Konzept 391
22.3 Die Umsetzung 392
22.4 Kommerzielle Spiele 392
22.5 Das Spiel 393
22.5.1 Idee 393
22.5.2 Konzept 393
22.5.3 Umsetzung 393
22.5.4 Hintergrundgrafik 394
22.5.5 Gegner 394
22.5.6 Spieler 396
22.5.7 Waffen 396
22.5.8 Kollisionserkennung 396
22.5.9 Musik und Soundeffekte 398
22.5.10 Punktewertung 399
23 3-D-Konzepte 401
23.1 Koordinatensysteme 401
23.2 Punkte und Vektoren 402
23.3 Objekte 403
23.3.1 Darstellung von Objekten 405
23.3.2 Schattierung 405
23.3.3 Beleuchtung 406
23.3.4 Materialien 408
23.3.5 Texturen 409
23.3.6 Z-Buffer 409
23.4 Objekte transformieren 410
23.5 Die Kamera 410
23.6 Verschiedene Räume 411
24 DirectX Graphics 413
24.1 Direct3D initialisieren 413
24.2 Einfache Objekte anzeigen 418
24.2.1 Flexible Vertex Format 418
24.2.2 Ein Dreieck darstellen 419
24.2.3 Vertex Buffer 421
24.2.4 Einen Würfel hinzufügen 426
24.2.5 Objekte rotieren und verschieben 429
24.3 Einen Z-Buffer hinzufügen 430
24.4 Texturen hinzufügen 431
24.5 Licht hinzufügen 434
24.6 Die Kamera bewegen 436
Anhang A: Die Buch-CD 439
Anhang B: Buchempfehlungen 441
Anhang C: Internetadressen rund um die Spieleprogrammierung 443
Stichwortverzeichnis 445
Einleitung 17
1 Grundlagen 19
1.1 Plattformen 19
1.2 Programmiersprachen 20
1.2.1 Compiler und Interpreter 20
1.2.2 Syntax und Semantik 21
1.2.3 Werkzeuge 21
1.3 Einstieg in C++ 22
1.3.1 Geschichte von C++ 22
1.3.2 Warum gerade C++ ? 23
1.3.3 Neuerungen in C++ 23
1.4 Visual C++ 25
1.4.1 Installation von Visual C++ 25
1.5 Installation der Beispielprogramme 28
2 Das erste Programm 29
2.1 HelloWorld 34
3 Konstanten und Variablen 41
3.1 Zeichenkonstanten 41
3.2 Sonderzeichen 43
3.3 Zeichenkettenkonstanten 43
3.4 Numerische Konstanten 44
3.5 Fließkommakonstanten 45
3.6 Datentypen in C++ 46
3.7 Symbolische Konstanten 47
3.8 Variablen 49
3.9 Globale und lokale Variablen 50
3.10 Zusätze für Konstanten und Variablen 52
3.11 Konstanten mit #define definieren 53
3.12 Definition neuer Typen 54
4 Anweisungen und Ausdrücke 57
4.1 cin 57
4.2 Anweisungen 58
4.3 Ausdrücke 59
4.4 Operatoren 60
4.4.1 Der Zuweisungsoperator 60
4.4.2 Arithmetische Operatoren 61
4.4.3 Inkrement- und Dekrementoperatoren 62
4.4.4 Bitoperatoren 65
4.4.5 Rangfolge der Operatoren und Klammersetzung 70
4.5 Kontrollstrukturen 71
4.5.1 Boolesche Werte 71
4.5.2 Logische Operatoren 72
4.5.3 Vergleichsoperatoren 73
4.5.4 Fallunterscheidung mit if 74
4.5.5 Fallunterscheidung mit switch 77
4.5.6 Die while-Schleife 79
4.5.7 Die do-while-Schleife 80
4.5.8 Die for-Schleife 81
5 Funktionen 85
5.1 Funktionen deklarieren 86
5.2 Funktionen definieren 87
5.3 Funktionsaufruf 89
5.4 Parameter und Rückgabewerte 90
5.5 Verschachtelung von Funktionsaufrufen 95
5.6 Variablen und Funktionen 96
5.7 Standardparameter 99
5.8 Inline-Funktionen 101
5.9 Funktionen überladen 102
5.10 Im Hintergrund 104
5.11 Rekursionen 105
6 Zeiger 109
6.1 Der Adressoperator 109
6.2 Zeiger deklarieren 111
6.3 Zeiger dereferenzieren 114
6.4 Zeiger und Funktionen 117
6.5 Arrays 119
6.5.1 Statische Arrays 119
6.5.2 Strings 127
6.5.3 Mehrdimensionale Felder 131
6.6 Strukturen 132
6.7 Dynamische Speicherverwaltung 135
6.7.1 Speicherbereiche 136
6.7.2 new und delete 137
7 Der Debugger 145
7.1 Schrittweise Programmausführung 147
7.2 Überwachen von Variablen 149
7.3 Überwachung 149
7.4 Aufrufliste 150
7.5 Speicheransicht 150
7.6 Register 151
7.7 Disassemblierung 151
7.8 Setzen von Breakpoints 151
7.9 Debug und Release 152
8 Ausgewählte Themen 155
8.1 Werteübergabe an die main-Funktion 155
8.2 Formatierte Ausgabe mit printf 157
8.3 Dateiarbeit 161
8.3.1 Arbeit mit Textdateien 161
8.3.2 Arbeit mit Binärdateien 165
8.4 type-cast 167
8.5 Dynamische Datenstrukturen 168
8.6 Ein Programm in Module aufteilen 176
9 Objektorientierte Programmierung 179
9.1 Objekte 180
9.2 Klassen 180
9.2.1 Objekte instantieren 182
9.2.2 Zugriffsbeschränkungen 183
9.3 Konstruktoren und Destruktoren 185
9.4 Ein Beispiel zur objektorientierten Programmierung 188
9.4.1 Eine Funktion zum Löschen von Knoten 195
10 MSDN - das Hilfesystem 201
11 Windows-Grundlagen 205
11.1 Ereignisgesteuerte Programmierung 205
11.2 Windows-Datentypen 206
11.3 Ungarische Notation 207
11.4 Handle 208
11.5 Ein Projekt für ein Windows-Programm 209
11.6 WinMain 210
11.7 Fenster 211
11.7.1 Fensterklassen 211
11.8 Nachrichten 216
11.8.1 Nachrichten versenden 220
11.9 Hello Windows 221
12 Das GDI 225
12.1 Device Context 225
12.1.1 Pixel 226
12.2 Die Nachricht WM_PAINT 227
12.2.1 GDI-Funktionen zur Textausgabe 228
12.2.2 Texte farbig darstellen 229
12.2.3 GDI-Funktionen zur Grafikausgabe 231
12.3 Maus-Nachrichten 233
12.3.1 Invalidate 234
13 Vererbung 239
13.1 Klassen für geometrische Objekte 239
13.1.1 Rechtecke 240
13.1.2 Kreise 242
13.1.3 Dreiecke 243
13.2 Eine Basisklasse erstellen 245
13.2.1 Ableitung 247
13.2.2 public, private und protected 249
13.2.3 Konstruktoren und Destruktoren 250
13.2.4 Virtuelle Methoden 251
13.2.5 Abstrakte Basisklassen 253
13.3 Verwaltung der Objekte in einer Liste 253
14 DirectX 259
14.1 Was ist DirectX ? 259
14.1.1 SDK und Laufzeitumgebung 260
14.2 Die Geschichte von DirectX 260
14.3 Die Architektur von DirectX 262
14.3.1 DirectDraw 262
14.3.2 Direct3D 263
14.3.3 DirectSound 264
14.3.4 DirectMusic 264
14.3.5 DirectInput 264
14.3.6 DirectPlay 264
14.3.7 DirectSetup 264
14.4 Neuerungen in DirectX 8 265
14.4.1 Integration von Direct3D und DirectDraw 265
14.4.2 Zusammenfassung von DirectMusic und DirectSound 265
14.4.3 Neuerungen an DirectInput 265
14.4.4 Neuerungen an DirectPlay 266
14.4.5 DirectShow 266
14.5 Abwärtskompatibilität 266
14.6 OpenGL - die Alternative 267
15 Installation von DirectX 269
16 Einführung in COM 273
16.1 COM und DirectX 274
16.2 Schnittstellen abfragen 275
17 DirectDraw 277
17.1 Hintergrund 277
17.1.1 Grafik- und Hauptspeicher 279
17.2 Der Einsatz von DirectDraw 280
17.2.1 Vorbereitungen 280
17.2.2 Ein DirectDraw-Objekt anlegen 282
17.2.3 Die Kooperationsebene festlegen 284
17.2.4 Die primäre Oberfläche 286
17.2.5 Clipper 288
17.2.6 Blitting 290
17.2.7 Die Funktion Error 296
17.2.8 Freigeben von Objekten 297
17.2.9 Das Beispielprogramm 298
17.3 Eine Fullscreen-Anwendung 300
17.4 Nutzung von GDI-Funktionen 301
17.5 Bestimmung der Farbe 302
17.6 Zugriff auf weitere Grafikkarten 305
18 Die Spielschleife 309
18.1 Erzeugung einer Spielschleife 309
18.2 Framerate 312
18.3 Begrenzung der Framerate 312
19 Oberflächen und Sprites 317
19.1 Oberflächenarten 317
19.1.1 Oberflächen anlegen 318
19.1.2 Eigenschaften einer Oberfläche abfragen 321
19.1.3 Oberflächen füllen und kopieren 321
19.2 Bitmaps in Oberflächen laden 322
19.3 Sprites 327
19.3.1 Oberflächen für Sprites erzeugen 328
19.3.2 Die Bildschirmbegrenzungen beachten 331
19.4 Doppelpufferung 333
19.5 Eine DirectDraw-Klasse 339
19.6 Eine Sprite-Klasse 340
19.6.1 Colorkeys 342
19.7 Sprites animieren 344
19.7.1 Erweiterung der Spriteklasse 345
19.8 Zugriff auf Pixel in einer Oberflächen 348
19.8.1 Ein Sternenfeld 350
19.9 Scrolling 353
20 DirectInput 357
20.1 Vorteile von DirectInput 357
20.2 Der Einsatz von DirectInput 358
20.3 Behandlung von Tastatureingaben 359
20.4 Behandlung von Mauseingaben 363
20.4.1 Polling 363
20.4.2 Ereigniserzeugung 366
20.5 Behandlung des Joysticks 368
20.6 Force Feedback 372
20.7 Action Mapping 375
20.8 Eine Klasse für DirectInput 376
21 DirectX Audio 381
21.1 Grundlagen 381
21.1.1 Performance, Loader und Segmente 382
21.2 Initialisieren von DirectX Audio 383
21.3 Laden von Musik- und Sounddateien 384
21.4 Musik-Dateien abspielen 386
21.5 DirectX Audio beenden 387
21.6 Eine Klasse für DirectX Audio 388
22 Ein Spiel 391
22.1 Die Idee 391
22.2 Das Konzept 391
22.3 Die Umsetzung 392
22.4 Kommerzielle Spiele 392
22.5 Das Spiel 393
22.5.1 Idee 393
22.5.2 Konzept 393
22.5.3 Umsetzung 393
22.5.4 Hintergrundgrafik 394
22.5.5 Gegner 394
22.5.6 Spieler 396
22.5.7 Waffen 396
22.5.8 Kollisionserkennung 396
22.5.9 Musik und Soundeffekte 398
22.5.10 Punktewertung 399
23 3-D-Konzepte 401
23.1 Koordinatensysteme 401
23.2 Punkte und Vektoren 402
23.3 Objekte 403
23.3.1 Darstellung von Objekten 405
23.3.2 Schattierung 405
23.3.3 Beleuchtung 406
23.3.4 Materialien 408
23.3.5 Texturen 409
23.3.6 Z-Buffer 409
23.4 Objekte transformieren 410
23.5 Die Kamera 410
23.6 Verschiedene Räume 411
24 DirectX Graphics 413
24.1 Direct3D initialisieren 413
24.2 Einfache Objekte anzeigen 418
24.2.1 Flexible Vertex Format 418
24.2.2 Ein Dreieck darstellen 419
24.2.3 Vertex Buffer 421
24.2.4 Einen Würfel hinzufügen 426
24.2.5 Objekte rotieren und verschieben 429
24.3 Einen Z-Buffer hinzufügen 430
24.4 Texturen hinzufügen 431
24.5 Licht hinzufügen 434
24.6 Die Kamera bewegen 436
Anhang A: Die Buch-CD 439
Anhang B: Buchempfehlungen 441
Anhang C: Internetadressen rund um die Spieleprogrammierung 443
Stichwortverzeichnis 445