Spieleprogrammierung mit DirectX



Ähnliche Dokumente
jllzl lerne i cfi DirectX 9 und Visual C++ Der einfache Einstieg in die Spieleprogrammierung Markt+Technik

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

C-Programmierung unter TOS ATARI ST

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

C++ für Spieleprogrammierer

jetzt lerne ich PHP 5 & MySQL 4.1 Der schnelle Einstieg in die objektorientierte

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Andre Willms. Spielend C++ lernen. oder wie man Käfern Beine macht. Galileo Press

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

C++-Entwicklung mit Linux

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

Objektorientierte Programmierung in Java

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Vorkurs C++ Programmierung

Roberto lerusalimschy. Programmieren mit Lua

1. Übung zu "Numerik partieller Differentialgleichungen"

Inhaltsverzeichnis. 1 Hallo 13

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

Walter Saumweber. Richtig einsteigen: Programmieren lernen mit Visual C

Michael Weigend. Python GE-PACKT

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

C programmieren. Jürgen Wolf

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik Was ist Informatik? Teilgebiete der Informatik 8

Inhalt. Vorwort Erste Grundlagen... 15

Einführung in die C-Programmierung

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches...

Objektorientierte Programmierung mite**

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Peter Norton Paul Yao. f}oü r^v rjo I L) Deutsche Übersetzung: ADP Dripke GmbH. Markt&Technik Verlag AG

Inhaltsverzeichnis. Fritz Jobst. Programmieren in Java ISBN: Weitere Informationen oder Bestellungen unter

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

<Trainingsinhalt> C# programmieren

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp

Sachwortverzeichnis

Auf einen Blick. Vorwort Einführung Sprachgrundlagen von VBScript Objektorientierte Programmierung mit. dem Windows Script Host 115

Inhaltsverzeichnis. Vorwort. Basiswissen

Einführung in die Numerik mit VBA

Unity 4 Teil II. Universität zu Köln Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: Manfred Thaller Marvin Busch

C++ Programmieren mit einfachen Beispielen DIRK LOUIS

Beschreibung des Angebotes

in 21 Tagen Jesse Liberty Der optimale Weg - {Schritt für Schritt zum Programmierprofi

Helmut Dittrich Jürgen Mellenthin PHP 4-Workshop

Arbeiten mit Turbo Pascal 5.0

1 Einführung Erste Schritte Programmierkurs Datentypen Weiterführende Programmierung

Knasmüller.book Seite vii Mittwoch, 28. März : vii. Inhaltsverzeichnis

Einführung Design und Programmierung. Microsoft Dynamics NAV 2016

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Teil A Einführung in Microsoft Visual C# und Microsoft Visual Studio

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen...

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Inhaltsverzeichnis. 1 Einleitung 11

Webseiten entwickeln mit ASP.NET

C#.NET mit Methode. Professionelle Software entwickeln mit C# und.net: Grundlagen, Windows, ADO.NET, ASP.NET und Remoting. vieweg.

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Martin Marinschek- Wolfgang Radinger. Ruby on Rails. Einstieg in die effiziente Webentwicklung. [Tu dpunkt.verlag

Spieleprogrammierung mit DirectX und C++

Vorwort. Ulrich Breymann. Der C++-Programmierer. C++ lernen - Professionell anwenden - Lösungen nutzen ISBN:

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Inhaltsverzeichnis. Heiko Kalista. C++ für Spieleprogrammierer ISBN: Weitere Informationen oder Bestellungen unter

Moderne C-Programmierung

Inhalt. Teil I: Der Sprachkern von JavaScript

Einführung in die Java- Programmierung

Objektorientierte Programmierung mit C++ SS 2007

FRANZIS PC+ELEKTRONIK. Jochen Ferger AI1 AI2 AI3 AI4. Masse 5V W «км. AOut PCF8591 SCL SDA. MSR mit USB und Java. Mit 152 Abbildungen

C++ für Spieleprogrammierer

1 ALLGEMEINES ZU DYNAMICS NAV Geschichte zu Dynamics NAV Datenbank Wo bekommt man Hilfe zu Dynamics NAV?...

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Curriculum des Wahlfaches Informatik für das Gymnasium Dialog

Inhaltsverzeichnis. Apps für Android entwickeln

Arnold Willemer. Einstieg in C++ Galileo Press

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Objektorientierte Programmierung mit C++ Vector und List

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Polymorphismus 179. Function.h. #include <string>

Inhaltsverzeichnis. Einleitung... 11

Einstieg in PHP 5.3 und MySQL 5.1

Über den Autor 7. Teil I Los geht s mit Java für die Android-Entwicklung 25. Kapitel 1 Alles über Java und Android 27

Clemens Gull. Joomlal-Extensions. mit PHP entwickeln. Mit 322 Abbildungen

Erwin Grüner

Arnold Willemer C++ Der Einstieg. WlLEY

Inhaltsverzeichnis. Heinrich Wimmer. Grundkurs Programmieren in Visual C# ISBN: Weitere Informationen oder Bestellungen unter

Inhaltsverzeichnis. Heiko Kalista. C++ für Spieleprogrammierer. ISBN (Buch): ISBN (E-Book):

Software-Entwicklung mit Delphi

Grundkurs Software- Entwicklung mit C++

Inhaltsverzeichnis. Einleitung 11. Teil A Erste Schritte mit Visual Basic

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in die Programmiersprache C

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Programmieren mit DirectX

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

2. Programmierung in C

Vorlesung Informatik II

Java: Vererbung. Teil 3: super()

Inhaltsverzeichnis. Inhaltsverzeichnis

Transkript:

jetzt lerne ich Spieleprogrammierung mit DirectX Der einfache Einstieg in die C++-Programmierung CHRISTIAN ROUSSELLE

Inhaltsverzeichnis jetzt lerne ich 1 Einführung 17 2 Grundlagen 19 2.1 Plattformen 19 2.2 Programmiersprachen 20 2.2.1 Entstehung und Entwicklung von Programmiersprachen 20 2.2.2 Compiler 21 2.2.3 Warum gerade C++? 22 2.3 Werkzeuge (Tools) 22 2.4 Installation der Werkzeuge 24 2.5 Installation der Beispielprogramme 29 2.6 Fragen 29 3 Das erste Programm 31 3.1 Einführung in Code::Blocks Studio 31 3.2 Projekte anlegen 36 3.3 Hello World 40 3.4 Zusammenfassung 49 3.5 Fragen 49 4 Konstanten und Variablen 51 4.1 Zeichenkonstanten 51 4.2 Sonderzeichen 53 4.3 Zeichenkettenkonstanten 53 4.4 Numerische Konstanten 54 7

jetzt lerne ich Inhaltsverzeichnis 4.5 Fließkommakonstanten 55 4.6 Datentypen in C++ 56 4.7 Symbolische Konstanten 57 4.8 Variablen 59 4.9 Globale und lokale Variablen 60 4.10 Zusätze für Konstanten und Variablen 63 4.11 Konstanten mit #define definieren 64 4.12 Definition neuer Typen 65 4.13 Zusammenfassung 67 4.14 Fragen 67 5 Anweisungen und Ausdrücke 69 5.1 cin 69 5.2 Anweisungen 70 5.3 Ausdrücke 71 5.4 Operatoren 72 5.4.1 Der Zuweisungsoperator 72 5.4.2 Arithmetische Operatoren 73 5.4.3 Inkrement- und Dekrementoperatoren 74 5.4.4 Bitoperatoren 78 5.4.5 Rangfolge der Operatoren und Klammersetzung 83 5.5 Kontrollstrukturen 84 5.5.1 Boolesche Werte 84 5.5.2 Logische Operatoren 85 5.5.3 Vergleichsoperatoren 86 5.5.4 Fallunterscheidung mit if 87 5.5.5 Fallunterscheidung mit switch 90 5.5.6 Die while-schleife 92 5.5.7 Die do while-schleife 93 5.5.8 Die for-schleife 94 5.6 Zusammenfassung 97 5.7 Fragen 98 6 Funktionen 99 6.1 Funktionen deklarieren 100 6.2 Funktionen definieren 101 6.3 Funktionsaufruf 103 6.4 Parameter und Rückgabewerte 104 6.5 Verschachtelung von Funktionsaufrufen 109 6.6 Variablen und Funktionen 110 6.7 Standardparameter 113 8

Inhaltsverzeichnis jetzt lerne ich 6.8 Inline-Funktionen 115 6.9 Funktionen überladen 116 6.10 Funktionsaufrufe 118 6.11 Rekursionen 120 6.12 Zusammenfassung 123 6.13 Fragen 124 7 Zeiger, Arrays und Strukturen 125 7.1 Der Adressoperator 125 7.2 Zeiger definieren 127 7.3 Dereferenzierung von Zeigern 130 7.4 Zeiger und Funktionen 133 7.5 Arrays 135 7.5.1 Statische Arrays 135 7.5.2 Strings 143 7.5.3 Mehrdimensionale Arrays 147 7.6 Strukturen 148 7.7 Dynamische Speicherverwaltung 151 7.7.1 Speicherbereiche 152 7.7.2 new und delete 152 7.8 Zusammenfassung 158 7.9 Fragen 159 8 Der Debugger 161 8.1 Installation des Debuggers 162 8.2 Einstellungen in Code::Blocks 163 8.3 Programme debuggen 164 8.4 Setzen von Breakpoints 165 8.5 Schrittweise Programmausführung 166 8.6 Überwachen von Variablen 167 8.7 Individuelle Variablenüberwachung 168 8.8 Aufrufliste 168 8.9 Speicheransicht 169 8.10 Register 169 8.11 Disassemblierung 169 8.12 Debug- und Release-Version 170 8.13 Zusammenfassung 173 9 Ausgewählte Themen 175 9.1 Werteübergabe an die main()-funktion 175 9.2 Formatierte Ausgabe mit cout und printf() 177 9.2.1 Ausgabe mit cout 177 9

jetzt lerne ich Inhaltsverzeichnis 9.2.2 Ausgabe mit printf() 179 9.3 Arbeiten mit Dateien 183 9.3.1 Arbeiten mit Textdateien 183 9.3.2 Arbeiten mit Binärdateien 187 9.4 Type Casts 190 9.5 Dynamische Datenstrukturen 190 9.6 Ein Programm in Module aufteilen 198 9.7 Zusammenfassung 200 9.8 Fragen 200 10 Objektorientierte Programmierung 201 10.1 Neuerungen in C++ 201 10.2 Objektorientierter Ansatz 203 10.3 Objekte 203 10.4 Klassen 204 10.4.1 Objekte instanziieren 206 10.4.2 Zugriffsbeschränkungen 206 10.5 Konstruktoren und Destruktoren 208 10.6 Zusammenfassung 212 10.7 Fragen 212 11 MSDN das Hilfesystem 213 12 Grundlagen der Windows-Programmierung 217 12.1 Ereignisgesteuerte Programmierung 217 12.2 Windows-Datentypen 218 12.3 Ungarische Notation 219 12.4 Handles 221 12.5 Windows-Projekte 221 12.6 WinMain() 222 12.7 Fenster 223 12.8 Nachrichten 228 12.9 Hello Windows 232 12.10 Zusammenfassung 235 12.11 Fragen 236 13 Graphics Device Interface (GDI) 237 13.1 Device Context 237 13.2 Die Nachricht WM_PAINT 239 13.3 GDI-Funktionen zur Textausgabe 240 13.4 GDI-Funktionen zur Grafikausgabe 243 13.5 Mausnachrichten 245 10

Inhaltsverzeichnis jetzt lerne ich 13.6 Invalidate() 246 13.7 Zusammenfassung 249 13.8 Fragen 249 14 Vererbung 251 14.1 Klassen für geometrische Objekte 251 14.1.1 Rechtecke 252 14.1.2 Kreise 254 14.1.3 Dreiecke 255 14.2 Eine Basisklasse erstellen 257 14.2.1 Ableitung 259 14.2.2 public, private und protected 261 14.2.3 Konstruktoren und Destruktoren 261 14.2.4 Virtuelle Methoden 263 14.2.5 Abstrakte Basisklassen 264 14.2.6 Virtuelle Destruktoren 266 14.3 Zusammenfassung 267 14.4 Fragen 267 15 Die C++ Standard Library 269 15.1 Templates 270 15.2 Namespace 271 15.3 list 273 15.4 Iteratoren 275 15.5 vector 276 15.6 map 278 15.7 string 279 15.8 fstream 280 15.8.1 Textdateien mit fstream 281 15.8.2 getline 284 15.8.3 Binärdateien mit fstream 285 15.9 Zusammenfassung 286 15.10 Fragen 286 16 DirectX 287 16.1 Was ist DirectX? 287 16.2 Die Geschichte von DirectX 288 16.3 Die Architektur von DirectX 289 16.4 DirectX 9 292 16.5 Abwärtskompatibilität 292 16.6 OpenGL die Alternative 292 16.7 Zusammenfassung 293 11

jetzt lerne ich Inhaltsverzeichnis 17 Installation von DirectX 295 17.1 Starten der Installation 295 17.2 Anpassen von Code::Blocks 296 17.3 Bestandteile des DirectX-SDK 298 17.4 Zusammenfassung 300 18 Einführung in COM 301 18.1 COM-Strategien 301 18.2 COM und DirectX 302 18.3 Zusammenfassung 303 19 2D mit DirectX Graphics 305 19.1 Grundlagen 305 19.1.1 Pixel, Bildschirmspeicher, Auflösung und Farbtiefe 305 19.1.2 Grafik- und Hauptspeicher 308 19.1.3 Aufbau einer Szene 309 19.1.4 Sprites 310 19.1.5 Frontbuffer, Backbuffer und Doppelpufferung 311 19.1.6 Clipping 314 19.2 Der erste Einsatz von DirectX Graphics 314 19.2.1 Vorbereitungen 314 19.2.2 Ein Direct3D-Objekt anlegen 316 19.2.3 Direct3D beenden 322 19.2.4 Text ausgeben 325 19.2.5 Die Klasse CDirect3D 328 19.2.6 Fehlerbehandlung mit DirectX 330 19.3 Zusammenfassung 332 19.4 Fragen 332 20 Surfaces 333 20.1 Direct3D-Surfaces 333 20.2 Surfaces anlegen 335 20.2.1 Eigenschaften von Surfaces abfragen 337 20.2.2 Surfaces mit Farben füllen 337 20.3 Surfaces anzeigen 338 20.4 Grafiken in Surfaces laden 340 20.5 Direkter Zugriff auf Oberflächen 342 20.6 Ein Sternenfeld 346 20.7 Implementierung einer Spielschleife 354 20.8 Nutzung von GDI-Funktionen 357 20.9 Scrolling 359 12

Inhaltsverzeichnis jetzt lerne ich 20.10 Screenshots 363 20.11 Zusammenfassung 364 20.12 Fragen 365 21 Sprites 367 21.1 Direct3D-Sprites 367 21.2 Sprites bewegen 373 21.3 Flüssige Bewegung 375 21.4 Sprites transformieren 377 21.5 Eine Klasse für Sprites 380 21.6 Sprites animieren 385 21.7 Zusammenfassung 389 21.8 Fragen 389 22 Ressourcenmanagement und Timing 391 22.1 Verwaltung der Texturen 391 22.2 Timing 395 22.3 Begrenzung der Framerate 396 22.4 Anpassung der Bewegung an die Framerate 399 22.5 Zusammenfassung 403 22.6 Fragen 403 23 DirectInput 405 23.1 Vorteile von DirectInput 405 23.2 Der Einsatz von DirectInput 406 23.3 Behandlung von Tastatureingaben 407 23.4 Behandlung von Mauseingaben 410 23.4.1 Polling 411 23.4.2 Ereigniserzeugung 414 23.5 Behandlung des Joysticks 415 23.6 Force Feedback 419 23.7 Eine Klasse für DirectInput 423 23.8 Zusammenfassung 426 23.9 Fragen 426 24 DirectX Audio 427 24.1 Grundlagen 427 24.2 Performance, Loader und Segmente 429 24.3 Initialisieren von DirectX Audio 429 24.4 Laden von Musik- und Sounddateien 431 24.5 Musikdateien abspielen 432 24.6 DirectX Audio beenden 433 13

jetzt lerne ich Inhaltsverzeichnis 24.7 Eine Klasse für DirectX Audio 434 24.8 Zusammenfassung 435 24.9 Fragen 436 25 JLI Asteroids & JLI Fighter 437 25.1 Kommerzielle Spiele 437 25.2 Die Idee 438 25.3 Das Konzept 438 25.4 Die Umsetzung 438 25.5 JLI Asteroids 439 25.5.1 Einführung 439 25.5.2 Umsetzung 439 25.5.3 Kollisionserkennung 441 25.5.4 Punktewertung 444 25.6 JLI Fighter 444 25.6.1 Animationssequenzen 444 25.6.2 Pixelgenaue Kollisionserkennung 446 25.7 Zusammenfassung 448 26 3D-Konzepte 449 26.1 Koordinatensysteme 449 26.2 Punkte und Vektoren 450 26.3 3D-Objekte 451 26.4 Darstellung von 3D-Objekten 452 26.5 Schattierung 453 26.6 Beleuchtung 454 26.7 Materialien 456 26.8 Texturen 457 26.9 Z-Buffer 457 26.10 Objekte transformieren 458 26.11 Die Kamera 459 26.12 Verschiedene Räume 459 26.13 Zusammenfassung 459 27 3D mit DirectX Graphics 461 27.1 Einfache Objekte anzeigen 461 27.1.1 Flexible Vertex Format 461 27.1.2 Rendern eines Dreiecks 462 27.1.3 Vertex Buffer 465 27.1.4 Einen Würfel zur Szene hinzufügen 469 27.2 Objekte rotieren und verschieben 472 27.3 Den Z-Buffer verwenden 474 14

Inhaltsverzeichnis jetzt lerne ich 27.4 Texturen 475 27.5 Licht hinzufügen 477 27.6 Die Klasse CScene 479 27.7 Material 480 27.8 Kamerabewegung 481 27.9 Zusammenfassung 483 27.10 Fragen 483 28 Terrain Generation 485 28.1 Freie Bewegung 485 28.2 Skybox 492 28.3 Erzeugung einer Landschaft 498 28.3.1 Heightmaps 500 28.3.2 Die Klasse CTerrain 500 28.3.3 Texturierung der Landschaft 507 28.4 Verbesserung der Performance 509 28.5 Weitere Verbesserungen 511 28.6 Zusammenfassung 512 28.7 Fragen 512 29 X-Files 513 29.1 Komplexe 3D-Objekte 513 29.2 Aufbau von X-Files 514 29.2.1 Templates 516 29.2.2 Beispiel für ein X-File 517 29.3 Direct3D-Meshes 521 29.3.1 Laden eines Mesh 521 29.3.2 Rendern des Mesh 524 29.3.3 Freigeben der Objekte 525 29.4 Die Klasse C3DObject 525 29.5 Progressive Meshes 527 29.6 Zusammenfassung 529 29.7 Fragen 529 Anhang A: Antworten 531 Anhang B: Die Buch-CD 539 Anhang C: Buchempfehlungen 541 Stichwortverzeichnis 543 15