Wstęp (7)
Część I: Dla początkujących (9)
Rozdział 1. Instalacja środowiska Dev-C++ (11)
Rozdział 2. Pierwszy program (13)
-
2.1. Przygotowanie edytora (13)
-
2.2. Kod wygenerowany przez Dev-C++ (15)
-
2.3. Określanie tytułu okna (19)
-
2.4. Określanie położenia i rozmiaru okna (19)
-
2.5. Określanie stylu okna (21)
-
2.6. Ćwiczenia (22)
Rozdział 3. Rysowanie w oknie (23)
-
3.1. Obsługa komunikatu WM_PAINT (23)
-
3.2. Zestawienie funkcji graficznych. Program z użyciem funkcji Ellipse i LineTo (25)
-
3.3. Wyświetlanie tekstu w obszarze roboczym okna (28)
-
3.4. Pierwszy program z użyciem funkcji SetPixel - wykres funkcji sinus (34)
-
3.5. Tworzenie pióra (39)
-
3.6. Drugi program z użyciem funkcji SetPixel - zbiór Mandelbrota (42)
-
3.7. Trzeci program z użyciem funkcji SetPixel - prosta obsługa bitmap (48)
-
3.8. Ćwiczenia (55)
Rozdział 4. Obsługa komunikatów myszy (57)
-
4.1. Program z obsługą komunikatu WM_MOUSEMOVE (57)
-
4.2. Obsługa komunikatów WM_LBUTTONDOWN i WM_RBUTTONDOWN - zbiór Mandelbrota po raz drugi (62)
-
4.3. Obsługa komunikatów WM_MOUSEMOVE, WM_LBUTTONDOWN i WM_RBUTTONDOWN - zbiór Mandelbrota a zbiory Julii (66)
-
4.4. Tajemnica przycisków okna (75)
-
4.5. Ćwiczenia (86)
Rozdział 5. Obsługa komunikatów klawiatury (87)
-
5.1. Komunikaty klawiatury. Obsługa komunikatu WM_CHAR (87)
-
5.2. Obsługa komunikatu WM_KEYDOWN. Diagram Feigenbauma (90)
-
5.3. Ćwiczenia (101)
Rozdział 6. Obiekty sterujące w oknie (103)
-
6.1. Obiekt klasy BUTTON (103)
-
6.2. Obsługa grafiki za pomocą obiektów klasy BUTTON (109)
-
6.3. Obiekt klasy edycji. Automaty komórkowe (116)
-
6.4. Ćwiczenia (128)
Rozdział 7. Menu i plik zasobów (131)
-
7.1. Dodanie menu do okna (131)
-
7.2. Obsługa bitmapy z pliku zasobów (138)
-
7.3. Odczytywanie danych z pliku. Edytor bitmap (143)
-
7.4. Kopiarka wielokrotnie redukująca (154)
-
7.5. Ćwiczenia (169)
-
Podsumowanie części I (169)
Część II: Dla średniozaawansowanych (171)
Rozdział 8. Projektowanie aplikacji wielowątkowych (173)
-
8.1. Tworzenie wątków za pomocą funkcji CreateThread (173)
-
8.2. Czy praca z wątkami przyspiesza działanie aplikacji? Sekcja krytyczna i priorytety wątków (178)
-
8.3. Wstrzymywanie pracy i usuwanie wątków (190)
-
8.4. Ćwiczenia (199)
Rozdział 9. Definiowanie bibliotek (201)
-
9.1. Biblioteki statyczne (201)
-
9.2. Biblioteki dynamiczne - podejście strukturalne (207)
-
9.3. Biblioteki dynamiczne - podejście obiektowe (220)
-
9.4. Własny temat okna (225)
-
9.5. Ćwiczenia (254)
Rozdział 10. Multimedia (255)
-
10.1. Odtwarzanie plików wav - funkcja sndPlaySound (255)
-
10.2. Odtwarzanie plików mp3 - biblioteka FMOD (258)
-
10.3. Ćwiczenia (269)
-
Podsumowanie części II (270)
Część III: Dla zaawansowanych (273)
Rozdział 11. Programowanie gier z użyciem biblioteki OpenGL (275)
-
11.1. Podstawy obsługi biblioteki OpenGL (275)
-
11.2. Prymitywy OpenGL (284)
-
11.3. Bufor głębokości, perspektywa - wzorzec kodu do programowania gier (pierwsze starcie) (298)
-
11.4. Animacja (309)
-
11.5. Poruszanie się po scenie, funkcja gluLookAt i wzorzec kodu do programowania gier (starcie drugie, decydujące) (320)
-
11.6. Tekstury i mipmapy (334)
-
11.7. Listy wyświetlania i optymalizacja kodu (349)
-
11.8. Detekcja kolizji (361)
-
11.9. Światło, mgła, przezroczystość i inne efekty specjalne (368)
-
Uruchamianie gry w trybie pełnoekranowym (368)
-
Mgła (371)
-
Przezroczystość (374)
-
Światło (384)
-
11.10. Jak ustawić stałą prędkość działania programu? (390)
-
11.11. Gotowe obiekty OpenGL (398)
-
11.12. Fonty (406)
-
11.13. Dźwięk na scenie (416)
-
11.14. Budujemy grę! (419)
-
Wprowadzenie i charakter gry (419)
-
Dane gracza (420)
-
Strzał z broni (423)
-
Pozostali bohaterowie gry (425)
-
Odnawianie zasobów gracza (428)
-
Zakończenie programu (gry) (430)
-
Podsumowanie części III (433)
Dodatki (435)
Dodatek A: (437)
Dodatek B: (439)
Skorowidz (441)