Spis treści:
Podziękowania
Wstęp
Rozdział 1. Wstęp do programowania gier
1.1. Świat gier
1.2. Czym jest OpenGL
1.3. Elementy
gry
1.3.1. Rendering
1.3.2. Dźwięk i muzyka
1.3.3. Urządzenia wejścia
1.3.4.
Sieć
1.3.5. Mechanika
1.3.6. Sztuczna inteligencja
1.3.7.
Matematyka i fizyka
1.4. Podstawowe pojęcia
1.4.1. Kolory i
RGB
1.4.2. Podwójne buforowanie
1.5. Typy danych w
OpenGL-u
Podsumowanie
Rozdział 2. Podstawy WinAPI i
szkielet aplikacji OpenGL
2.1. WinAPI
2.1.1. Jak działają
aplikacje Windows
2.1.2. Funkcja WinMain i najprostsza aplikacja
Windows
2.1.3. Rejestrowanie klasy okna, tworzenie i wyświetlanie
2.1.4. Pętla przetwarzania komunikatów
2.1.5. Funkcja
przetwarzania komunikatów
2.1.6. Pełen kod źródłowy
aplikacji Windows
2.1.7. Kontrolki
2.1.8. Zegary
2.1.9.
Funkcje GDI
2.1.10. Wątki
2.2. OpenGL
2.2.1. Standardowa
aplikacja WinAPI raz jeszcze
2.2.2. Format pikseli
2.2.3.
Funkcje WGL
2.2.4. Tryb pełnoekranowy
2.2.5. Kompletujemy
szkielet
2.2.6. Pełen kod aplikacji OpenGL
Podsumowanie
Rozdział 3. Matematyka
3.1. Trygonometria
3.1.1. Trójkąt prostokątny a funkcje trygonometryczne
3.1.2.
Wykresy funkcji trygonometrycznych
3.1.3. Funkcje odwrotne do
trygonometrycznych – arcusy
3.1.4. Liczenie kątów
3.1.5.
Kartezjański i biegunowy układ współrzędnych
3.1.6. Związki
między funkcjami trygonometrycznymi dowolnego kąta
3.1.7. Wzory
redukcyjne
3.1.8. Miara łukowa kąta – radian
3.1.9.
Praktyczne wykorzystanie funkcji trygonometrycznych
3.1.9.1. Ruch
falisty
3.1.9.2. Ruch po okręgu
3.1.9.3. Poruszanie à la
GTA2
3.1.10. Zadania
3.2. Wektory
3.2.1. Zapis wektorów
3.2.2. Otrzymywanie wektorów
3.2.3. Dodawanie
wektorów
3.2.4. Odejmowanie wektorów
3.2.5. Mnożenie
wektora przez skalar
3.2.6. Normalizacja wektora
3.2.7.
Iloczyn skalarny wektorów
3.2.8. Iloczyn wektorowy wektorów
3.2.9. Wektor normalny powierzchni
3.2.10. Wektory równoległe
3.2.11. Wektory prostopadłe
3.2.12. Wzory na otrzymanie
konkretnych wektorów
3.2.12.1. Wektor odbity
3.2.12.2. Wektor
prędkości po kolizji
3.2.13. Zadania
3.3. Macierze
3.3.1.
Zapis macierzy
3.3.2. Dodawanie i odejmowanie macierzy
3.3.3.
Mnożenie macierzy
3.3.4. Macierz tożsamościowa
3.3.5.
Macierz transponowana
3.3.6. Transformacje
3.3.6.1. Macierz
translacji (przemieszczenia)
3.3.6.2. Macierz skalowania
3.3.6.3. Macierz rotacji (obrotu)
3.3.7. Słów kilka o
porządkach kolumnowym i wierszowym
3.3.8. Składanie
przekształceń
3.3.9. Zadania
Podsumowanie
Rozdział
4. Fizyka
4.1. Mechanika klasyczna
4.1.1. Ruch i
jego rodzaje
4.1.2. Ruch jednostajny prostoliniowy
4.1.3. Ruch
jednostajnie przyspieszony
4.1.4. Siły
4.1.5. „Asteroidy”
– przykładowa gra
4.1.6. Opór
4.1.7. Siła grawitacji
4.1.8. Fizyka sprężyny
4.2. Ruch obrotowy, mechanika bryły
sztywnej
4.2.1. Ruch po okręgu
4.2.2. Bryła sztywna
4.2.3.
Fizyka liny
4.2.4. Błąd w przykładzie lina
Podsumowanie
Rozdział 5. Renderowanie w 3D
5.1.
Prymitywy
5.1.1. Punkty
5.1.1.1. Rozmiar
5.1.1.2.
Antialiasing
5.1.2. Linie
5.1.2.1. Łamane i łamane zamknięte
5.1.2.2. Wzorcowe
5.1.2.3. Szerokość
5.1.2.4.
Antialiasing
5.1.3. Wielokąty
5.1.3.1. Wypełnianie wzorem
5.1.3.2. Cieniowanie
5.1.3.3. Tryby wypełniania
5.1.3.4.
Widoczność
5.1.3.5. Ukrywanie krawędzi
5.1.3.6. Reguły
konstruowania
5.1.4. Trójkąty
5.1.4.1. Listy trójkątów
5.1.4.2. Paski trójkątów
5.1.4.3. Wachlarze
trójkątów
5.1.5. Czworokąty
5.1.5.1. Paski czworokątów
5.2. Kwadryki
5.2.1. Tworzenie i zwalnianie
5.2.2. Funkcje
związane z kwadrykami
5.2.3. Dyski
5.2.4. Cylindry
5.2.5.
Sfery
5.2.6. Uwagi odnośnie optymalizacji kwadryk
Podsumowanie
Rozdział 6. Manipulowanie
przestrzenią
6.1. Układ współrzędnych
6.2. Rzutowanie
6.2.1. Rzutowanie perspektywiczne
6.2.2. Rzutowanie
ortogonalne
6.3. Kamera
6.4. Macierz projekcji (rzutowania) i
modelowania
6.5. Przekształcenia
6.5.1. Translacja
6.5.2.
Skalowanie
6.5.3. Rotacja
6.5.4. Aplikacja – układ
słoneczny
6.6. Stosy macierzy
6.7. Funkcje macierzowe OpenGL
6.7.1. Pobieranie stanu macierzy
6.7.2. Mnożenie macierzy
6.7.3. Ładowanie macierzy
6.8. Inny opis położenia i
orientacji obiektu
6.9. Ręczne przekształcanie wierzchołków
Podsumowanie
Rozdział 7. Materiały
i oświetlenie
7.1. W teorii
7.1.1. Otoczenie
7.1.2. Rozproszenie
7.1.3. Odbicie (połysk)
7.1.4.
Obliczanie natężenia oświetlenia
7.1.5. Wektory normalne
7.2.
Materiały
7.2.1. Otoczenie
7.2.2. Rozproszenie
7.2.3.
Otoczenie i rozproszenie
7.2.4. Odbicie
7.2.5. Emisja
7.2.6.
Śledzenie materiału
7.3. Oświetlenie
7.3.1.
Otoczenie
7.3.2. Rozproszenie
7.3.3. Odbicie
7.3.4.
Pozycja
7.3.5. Reflektor
7.3.6. Tłumienie
7.3.7.
Konfiguracja modelu oświetlenia
7.4. Aplikacja –
pomieszczenie
7.5. Ręczne obliczanie oświetlenia per-vertex
7.5.1. Model płaski
7.5.2. Model płynny
Podsumowanie
Rozdział 8. Bitmapy i teksturowanie
8.1. Bitmapy
8.1.1. Struktura bitmapy i ładowanie z
pliku
8.1.2. Funkcje bitmapowe
8.1.2.1. Przemieszczanie
rastra
8.1.2.2. Wykreślanie pikseli
8.1.2.3. Odczytywanie
pikseli
8.1.2.4. Kopiowanie pikseli
8.1.2.5. Skalowanie
obrazu
8.1.2.6. Rysowanie „prawdziwej” bitmapy
8.2.
Teksturowanie
8.2.1. Funkcje operujące na teksturach
8.2.1.1.
Tworzenie, zwalnianie i wybieranie obiektów tekstur
8.2.1.2.
Tworzenie obrazów tekstur
8.2.1.3. Filtrowanie tekstur
8.2.1.4.
Współrzędne tekstur
8.2.1.5. Środowisko tekstur
8.2.2.
Aplikacja – oteksturowany sześcian
8.2.3. Macierz tekstury
8.2.4.
Teksturowanie kwadryk
Podsumowanie
Rozdział 9.
Optymalizacja
9.1. Listy wyświetlania
9.1.1. Funkcje
operujące na listach wyświetlania
9.1.1.1. Tworzenie i usuwanie
list
9.1.1.2. Umieszczanie poleceń na listach
9.1.1.3.
Wykonywanie list
9.1.2. Przykład wykorzystania
9.2. Tablice
wierzchołków
9.2.1. Funkcje operujące na tablicach
wierzchołków
9.2.1.1. Włączanie i wyłączanie tablic
9.2.1.2.
Przypisywanie danych do tablic
9.2.1.3. Renderowanie z użyciem
tablic
9.2.2. Przykład wykorzystania
Podsumowanie
Rozdział
10. Wbudowane mechanizmy OpenGL
10.1. Tekst
10.2.
Mgła
10.3. Bufor głębi
10.4. Blending
10.4.1.
Przezroczystość
10.4.2. Mapy świetlne
10.4.3. Wielokrotne
mapy świetlne
10.5. Testowanie alfa
10.6. Cięcie
10.6.1.
Nożyczki
10.6.2. Płaszczyzny tnące
10.7. Bufor szablonu
10.8. Mapowanie współrzędnych
10.8.1. Obiekt na okno
10.8.2. Okno na obiekt
Podsumowanie
Rozdział 11.
Modele 3D
11.1. W teorii
11.2. Format opisu sceny
*.ase programu 3ds max
11.3. Implementacja
11.4. Słów kilka
o animacji
Podsumowanie
Rozdział 12. Sposoby
wykrywania kolizji
12.1. Czworokąt
12.2. Okrąg
12.3.
Równanie prostej
12.4. Punkt w wielokącie
12.5. Poruszanie
po nierównym terenie
12.5.1. Interpolacja
12.5.2. Równanie
płaszczyzny
Podsumowanie
Rozdział 13. Przykładowy
świat – małe podsumowanie
13.1. Kamera
13.2. Teren
13.3. Woda
13.4. Mgła
13.5. Obiekty
13.6. Deszcz
13.7. FPS
13.8. Co jeszcze można poprawić
Podsumowanie
Rozdział 14. Dźwięk przestrzenny – OpenAL
14.1.
Inicjalizacja i finzlizacja
14.2. Obiekty
14.2.1. Bufory
14.2.1.1. Tworzenie i usuwanie
14.2.1.2. Ładowanie plików
*.wav
14.2.2. Źródła
14.2.2.1. Tworzenie i
usuwanie
14.2.2.2. Funkcje operujące na źródłach
14.2.2.3.
Parametry
14.2.3. Słuchacz
14.2.3.1. Parametry
14.3.
Modele dystansu
14.4. Przykładowa aplikacja
14.4.1. Kamera
14.4.2. Funkcje pomocnicze
14.4.3. Program główny
Rozdział
15. Sieć
15.1. Podstawy programowania sieciowego
15.2. Czego potrzebujemy, by zaimplementować sieć?
15.3.
TCP czy UDP?
15.4. Implementacja sieci za pomocą surowych gniazd
i WinSock
15.4.1. Struktury danych
15.4.2. Funkcje do
manipulacji adresami IP
15.4.3. Konieczne funkcje
15.4.4.
Przykłady programów sieciowych opartych na TCP
15.4.5.
Przykłady programów sieciowych opartych na UDP
15.5. Słów
kilka o grach czasu rzeczywistego
15.6. „Pong” –
przykładowa gra sieciowa
Podsumowanie
Rozdział 16. SDL
16.1. Inicjowanie obrazu
16.2. Główna pętla programu i
przechwytywanie zdarzeń
16.2.1. Obsługa klawiatury
16.2.2.
Obsługa myszki
16.3. Przechwytywanie czasu
16.4. Wątki
16.5.
SDL i OpenGL – szkielet aplikacji
16.6. SDL_net – sieć w SDL
16.6.1. Typy
16.6.2. Funkcje
Podsumowanie
Dodatek A. Konfiguracja SDL
Window
Visual C++ 6
Code Blocks
1.0rc2
Linux
Makra i kompilacja warunkowa
Dodatek B.
Rozwiązania zadań z rozdziału 3.
Funkcje
trygonometryczne
Wektory
Macierze
Dodatek C. Tablica
wartości funkcji trygonometrycznych
Zakończenie
Linki
Opis:
Lubisz gry komputerowe? Interesujesz
się programowaniem? Znasz dość dobrze język C i chciałbyś
tworzyć własne, trójwymiarowe światy? Jeśli na wszystkie te
pytania odpowiedziałeś twierdząco ? ta książka jest dla Ciebie!? OpenGL i wprowadzenie do programowania gier? przedstawia zasady
posługiwania się biblioteką OpenGL, dzięki której możliwe jest
tworzenie trójwymiarowych efektów graficznych. Jednak aby stworzyć
grę, nie wystarczą jedynie umiejętności z zakresu programowania
grafiki. Potrzebna jest także znajomość matematyki i fizyki,
wiedza jak zaprogramować przestrzenny dźwięk, jak zaimplementować
moduł matematyczny, czy jak w przypadku gier sieciowych ?
zaprogramować wydajną sieć.Niniejsza książka porusza wszystkie
te zagadnienia.Aby stworzyć grę zapierającą dech w piersiach
niezbędna jest przede wszystkim umiejętność programowania efektów
specjalnych. Dlatego temu zagadnieniu Autorzy poświęcają
szczególnie dużo miejsca i uwagi. Rozpoczęcie przygody z
programowaniem gier nie jest za daniem łatwym. Trzeba dokładnie, od
podstaw, poznać wszystkie tajniki programowania. Ta książka z
pewnością w tym pomoże!