OpenGL. Programowanie gier - Helion
Tytuł oryginału: OpenGL Game Programming
Tłumaczenie: Jaromir Senczyk
ISBN: 83-7361-035-9
stron: 632, Format: B5, okładka: miękka
Data wydania: 2003-06-09
Księgarnia: Helion
Cena książki: 129,00 zł
Coraz szybsze procesory, coraz wydajniejsze karty graficzne -- wszystko to powoduje, że programiści gier komputerowych potrafią kreować własne, wirtualne i trójwymiarowe światy, przyciągające gracza bogactwem szczegółów i drobiazgowym odwzorowaniem rzeczywistości (lub wyobraźni twórcy). Tworzenie tak zaawansowanych i skomplikowanych gier nie byłoby możliwe bez bibliotek graficznych, takich jak OpenGL, pozwalających na wyświetlanie trójwymiarowych obiektów przez karty graficzne różnych producentów. OpenGL w ogromnym stopniu przyspiesza pracę programisty.
Książka omawia użycie OpenGL do tworzenia dynamicznych, trójwymiarowych światów gier oraz efektów specjalnych. Przedstawia podstawy tworzenia aplikacji w systemie Windows, teorię grafiki trójwymiarowej, ale główny nacisk kładzie na prezentację funkcjonalności OpenGL. Jednak autor nie poprzestał na opisie. Sama biblioteka nie wystarcza do stworzenia gry. Opisane zostały także niezbędne programiście elementy biblioteki DirectX pozwalające na wzbogacenie gry o dźwięk i wygodne sterowanie.
Książka przedstawia:
- Podstawy programowania w Windows, funkcje WGL
- Podstawy teorii grafiki trójwymiarowej
- Maszynę stanów OpenGL i podstawowe elementy grafiki
- Przekształcenia układu współrzędnych i macierze OpenGL
- Kolory i efekty związane z oświetleniem
- Mapy bitowe i tekstury w OpenGL
- Listy wyświetlania i tablice wierzchołków
- Bufory OpenGL
- Krzywe, powierzchnie i powierzchnie drugiego stopnia
- Sposoby tworzenia efektów specjalnych
- Interfejs DirectInput
- Wykorzystanie DirectX Audio
- Trójwymiarowe modele postaci
"Osobiście pojawienie się tej książki przyprawia mnie o dreszcz emocji. Po raz pierwszy programiści otrzymują książkę poświęcona programowaniu gier za pomocą OpenGL. Jeśli nawet nie wiążesz swojej kariery zawodowej z tworzeniem gier komputerowych, to lektura tej książki pomoże Ci lepiej zrozumieć technologię, która wykorzystywana jest do tworzenia współczesnych gier, a także zdobyć umiejętności, które mogą być przydatne w innych dziedzinach programowania" -- Mark J. Kilgard, NVIDIA Corporation. Autor "OpenGL Programming for the X Window System" oraz pakietu OpenGL Utility Toolkit (GLUT)
Osoby które kupowały "OpenGL. Programowanie gier", wybierały także:
- OpenGL. Kurs video. Wprowadzenie do programowania grafiki komputerowej 99,00 zł, (44,55 zł -55%)
- OpenGL. Podstawy programowania grafiki 3D 89,00 zł, (44,50 zł -50%)
- OpenGL. Receptury dla programisty 54,90 zł, (27,45 zł -50%)
- OpenGL. Księga eksperta. Wydanie VII 119,00 zł, (89,25 zł -25%)
- Wprowadzenie do potoku renderującego OpenGL 58,61 zł, (46,89 zł -20%)
Spis treści
OpenGL. Programowanie gier -- spis treści
List od wydawcy serii (15)
O Autorach (17)
Przedmowa (19)
Wprowadzenie (21)
Część I Wprowadzenie do OpenGL i DirectX (23)
Rozdział 1. OpenGL i DirectX (25)
- Dlaczego tworzymy gry? (25)
- Świat gier (26)
- Elementy gry (26)
- Narzędzia (28)
- OpenGL (30)
- Historia OpenGL (30)
- Architektura OpenGL (31)
- Biblioteka GLU (31)
- Pakiet bibliotek GLUT (32)
- Programy (33)
- DirectX (33)
- Historia DirectX (34)
- Architektura DirectX (35)
- DirectX Graphics (36)
- DirectX Audio (36)
- DirectInput (36)
- DirectPlay (36)
- DirectShow (36)
- DirectSetup (37)
- Porównanie OpenGL i DirectX (37)
- Podsumowanie (37)
Rozdział 2. Korzystanie z OpenGL w systemie Windows (39)
- Wprowadzenie do programowania w systemie Windows (39)
- Podstawowa aplikacja systemu Windows (41)
- Funkcja WinMain() (42)
- Procedura okienkowa (42)
- Obsługa komunikatów (43)
- Klasy okien (44)
- Określenie atrybutów klasy okna (45)
- Ładowanie ikon i kursora myszy (46)
- Rejestracja klasy (48)
- Tworzenia okna (48)
- Pętla przetwarzania komunikatów (50)
- Kompletna aplikacja systemu Windows (52)
- Wprowadzenie do funkcji WGL (55)
- Kontekst tworzenia grafiki (56)
- Korzystanie z funkcji WGL (56)
- Funkcja wglCreateContext() (56)
- Funkcja wglDeleteContext() (56)
- Funkcja wglMakeCurrent() (57)
- Formaty pikseli (58)
- Pole nSize (58)
- Pole dwFlags (59)
- Pole iPixelType (59)
- Pole cColorBits (59)
- Aplikacja OpenGL w systemie Windows (60)
- Pełnoekranowe aplikacje OpenGL (67)
- Podsumowanie (69)
Rozdział 3. Przegląd teorii grafiki trójwymiarowej (71)
- Skalary, punkty i wektory (71)
- Długość wektora (72)
- Normalizacja wektora (72)
- Dodawanie wektorów (73)
- Mnożenie wektora przez skalar (73)
- Iloczyn skalarny wektorów (73)
- Iloczyn wektorowy (74)
- Macierze (75)
- Macierz jednostkowa (75)
- Macierz zerowa (75)
- Dodawanie i odejmowanie macierzy (76)
- Mnożenie macierzy (76)
- Implementacja działań na macierzach (78)
- Przekształcenia (79)
- Przesunięcie (80)
- Obrót (80)
- Skalowanie (82)
- Rzutowanie (82)
- Rzutowanie izometryczne (83)
- Rzutowanie perspektywiczne (84)
- Obcinanie (86)
- Światło (86)
- Światło otoczenia (87)
- Światło rozproszone (87)
- Światło odbijane (88)
- Odwzorowania tekstur (88)
- Podsumowanie (89)
Część II Korzystanie z OpenGL (91)
Rozdział 4. Maszyna stanów OpenGL i podstawowe elementy grafiki (93)
- Funkcje stanu (93)
- Podstawowe elementy grafiki (99)
- Tworzenie punktów w trójwymiarowej przestrzeni (100)
- Zmiana rozmiaru punktów (101)
- Antialiasing (101)
- Odcinki (102)
- Zmiana szerokości odcinka (103)
- Antialiasing odcinków (103)
- Wzór linii odcinka (103)
- Wielokąty (104)
- Ukrywanie powierzchni wielokątów (105)
- Ukrywanie krawędzi wielokątów (106)
- Antialiasing wielokątów (106)
- Wzór wypełnienia wielokątów (107)
- Trójkąty (107)
- Czworokąty (108)
- Dowolne wielokąty (109)
- Przykład wykorzystania podstawowych elementów grafiki (109)
- Tworzenie punktów w trójwymiarowej przestrzeni (100)
- Podsumowanie (110)
Rozdział 5. Przekształcenia układu współrzędnych i macierze OpenGL (111)
- Przekształcenia układu współrzędnych (111)
- Współrzędne kamery i obserwatora (113)
- Przekształcenia widoku (114)
- Wykorzystanie funkcji gluLookAt() (114)
- Wykorzystanie funkcji glRotate*() i glTranslate*() (115)
- Własne procedury przekształceń widoku (116)
- Przekształcenia modelowania (117)
- Rzutowanie (118)
- Przekształcenie okienkowe (118)
- OpenGL i macierze (119)
- Macierz modelowania (119)
- Przesunięcie (120)
- Obrót (120)
- Skalowanie (122)
- Stos macierzy (123)
- Model robota (124)
- Rzutowanie (132)
- Rzutowanie ortograficzne (133)
- Rzutowanie perspektywiczne (134)
- Okno widoku (135)
- Przykład rzutowania (136)
- Wykorzystanie własnych macierzy przekształceń (138)
- Ładowanie elementów macierzy (138)
- Mnożenie macierzy (139)
- Przykład zastosowania macierzy definiowanych (139)
- Podsumowanie (140)
Rozdział 6. Kolory, łączenie kolorów i oświetlenie (141)
- Czym są kolory? (141)
- Kolory w OpenGL (142)
- Głębia koloru (143)
- Sześcian kolorów (143)
- Model RGBA w OpenGL (143)
- Model indeksowany w OpenGL (144)
- Cieniowanie (145)
- Oświetlenie (147)
- Oświetlenie w OpenGL i w realnym świecie (147)
- Materiały (148)
- Normalne (148)
- Obliczanie normalnych (149)
- Użycie normalnych (151)
- Normalne jednostkowe (152)
- Korzystanie z oświetlenia w OpenGL (153)
- Tworzenie źródeł światła (158)
- Położenie źródła światła (159)
- Tłumienie (160)
- Strumień światła (160)
- Definiowanie materiałów (163)
- Modele oświetlenia (164)
- Efekty odbicia (166)
- Ruchome źródła światła (167)
- Łączenie kolorów (173)
- Przezroczystość (174)
- Podsumowanie (179)
Rozdział 7. Mapy bitowe i obrazy w OpenGL (181)
- Mapy bitowe w OpenGL (181)
- Umieszczanie map bitowych (182)
- Rysowanie mapy bitowej (183)
- Przykład zastosowania mapy bitowej (183)
- Wykorzystanie obrazów graficznych (185)
- Rysowanie obrazów graficznych (185)
- Odczytywanie obrazu z ekranu (187)
- Kopiowanie danych ekranu (187)
- Powiększanie, pomniejszanie i tworzenie odbić (188)
- Upakowanie danych mapy pikseli (188)
- Mapy bitowe systemu Windows (188)
- Format plików BMP (189)
- Ładowanie plików BMP (190)
- Zapis obrazu w pliku BMP (191)
- Pliki graficzne Targa (193)
- Format plików Targa (193)
- Ładowanie zawartości pliku Targa (194)
- Zapis obrazów w plikach Targa (196)
- Podsumowanie (197)
Rozdział 8. Odwzorowania tekstur (199)
- Odwzorowania tekstur (199)
- Przykład zastosowania tekstury (200)
- Mapy tekstur (205)
- Tekstury dwuwymiarowe (205)
- Tekstury jednowymiarowe (206)
- Tekstury trójwymiarowe (206)
- Obiekty tekstur (207)
- Tworzenie nazwy tekstury (207)
- Tworzenie i stosowanie obiektów tekstur (207)
- Filtrowanie tekstur (208)
- Funkcje tekstur (209)
- Współrzędne tekstury (209)
- Powtarzanie i rozciąganie tekstur (210)
- Mipmapy i poziomy szczegółowości (212)
- Automatyczne tworzenie mipmap (213)
- Animacja powiewającej flagi (213)
- Objaśnienia (214)
- Implementacja (214)
- Ukształtowanie terenu (223)
- Objaśnienia (223)
- Implementacja (227)
- Podsumowanie (235)
Rozdział 9. Zaawansowane odwzorowania tekstur (237)
- Tekstury wielokrotne (237)
- Sprawdzanie dostępności tekstur wielokrotnych (238)
- Dostęp do funkcji rozszerzeń (239)
- Tworzenie jednostek tekstury (240)
- Określanie współrzędnych tekstury (241)
- Przykład zastosowania tekstur wielokrotnych (242)
- Odwzorowanie otoczenia (250)
- Torus na niebie (250)
- Macierze tekstur (253)
- Mapy oświetlenia (255)
- Stosowanie map oświetlenia (255)
- Wieloprzebiegowe tekstury wielokrotne (261)
- Podsumowanie (265)
Rozdział 10. Listy wyświetlania i tablice wierzchołków (267)
- Listy wyświetlania (267)
- Tworzenie listy wyświetlania (268)
- Umieszczanie poleceń na liście wyświetlania (268)
- Wykonywanie list wyświetlania (269)
- Uwagi dotyczące list wyświetlania (271)
- Usuwanie list wyświetlania (271)
- Listy wyświetlania i tekstury (272)
- Przykład: animacja robota z użyciem list wyświetlania (273)
- Tablice wierzchołków (274)
- Obsługa tablic wierzchołków w OpenGL (275)
- Stosowanie tablic wierzchołków (276)
- glDrawArrays() (278)
- glDrawElements() (278)
- glDrawRangeElements() (279)
- glArrayElement() (279)
- Tablice wierzchołków i tekstury wielokrotne (280)
- Blokowanie tablic wierzchołków (280)
- Przykład: ukształtowanie terenu po raz drugi (281)
- Podsumowanie (284)
Rozdział 11. Wyświetlanie tekstów (285)
- Czcionki rastrowe (285)
- Czcionki konturowe (289)
- Czcionki pokryte teksturą (292)
- Podsumowanie (299)
Rozdział 12. Bufory OpenGL (301)
- Bufory OpenGL - wprowadzenie (301)
- Konfiguracja formatu pikseli (301)
- Opróżnianie buforów (304)
- Bufor koloru (305)
- Podwójne buforowanie (305)
- Buforowanie stereoskopowe (306)
- Bufor głębi (306)
- Funkcje porównania głębi (307)
- Zastosowania bufora głębi (307)
- Bufor powielania (316)
- Przykład zastosowania bufora powielania (319)
- Bufor akumulacji (324)
- Podsumowanie (326)
Rozdział 13. Powierzchnie drugiego stopnia (327)
- Powierzchnie drugiego stopnia w OpenGL (327)
- Styl powierzchni (328)
- Wektory normalne (328)
- Orientacja (329)
- Współrzędne tekstury (329)
- Usuwanie obiektów powierzchni (329)
- Dyski (329)
- Walce (331)
- Kule (332)
- Przykład użycia powierzchni drugiego stopnia (333)
- Podsumowanie (336)
Rozdział 14. Krzywe i powierzchnie (337)
- Reprezentacja krzywych i powierzchni (337)
- Równania parametryczne (338)
- Punkty kontrolne i pojęcie ciągłości (338)
- Ewaluatory (339)
- Siatka równoodległa (342)
- Powierzchnie (343)
- Pokrywanie powierzchni teksturami (346)
- Powierzchnie B-sklejane (350)
- Podsumowanie (354)
Rozdział 15. Efekty specjalne (355)
- Plakatowanie (355)
- Przykład: kaktusy na pustyni (357)
- Zastosowania systemów cząstek (359)
- Cząstki (359)
- Położenie (360)
- Prędkość (360)
- Czas życia (360)
- Rozmiar (361)
- Masa (361)
- Reprezentacja (361)
- Kolor (361)
- Przynależność (362)
- Metody (362)
- Systemy cząstek (362)
- Lista cząstek (362)
- Położenie (362)
- Częstość emisji (363)
- Oddziaływania (363)
- Atrybuty cząstek, zakresy ich wartości i wartości domyślne (363)
- Stan bieżący (364)
- Łączenie kolorów (364)
- Reprezentacja (364)
- Metody (364)
- Menedżer systemów cząstek (365)
- Implementacja (365)
- Tworzenie efektów za pomocą systemów cząstek (368)
- Przykład: śnieżyca (369)
- Cząstki (359)
- Mgła (373)
- Mgła w OpenGL (374)
- Mgła objętościowa (375)
- Odbicia (375)
- Odbicia światła (376)
- Obsługa bufora głębi (376)
- Obsługa skończonych płaszczyzn za pomocą bufora powielania (377)
- Tworzenie nieregularnych odbić (378)
- Odbicia na dowolnie zorientowanych płaszczyznach (378)
- Cienie (379)
- Cienie statyczne (379)
- Rzutowanie cieni (380)
- Macierz rzutowania cieni (380)
- Problemy z buforem głębi (381)
- Ograniczanie obszaru cieni za pomocą bufora powielania (381)
- Obsługa wielu źródeł światła i wielu zacienianych powierzchni (382)
- Problemy związane z rzutowaniem cieni (382)
- Bryły cieni w buforze powielania (383)
- Inne metody (384)
- Przykład: odbicia i cienie (384)
- Podsumowanie (387)
Część III Tworzymy grę (389)
Rozdział 16. DirectX: DirectInput (391)
- Dlaczego DirectInput? (391)
- Komunikaty systemu Windows (391)
- Interfejs programowy Win32 (394)
- Win32 i obsługa klawiatury (394)
- Win32 i obsługa manipulatorów (396)
- DirectInput (397)
- Inicjacja interfejsu DirectInput (397)
- Wartości zwracane przez funkcje DirectInput (398)
- Korzystanie z DirectInput (399)
- Dodawanie urządzeń (399)
- Tworzenie urządzeń (400)
- Tworzenie wyliczenia urządzeń (400)
- Sprawdzanie możliwości urządzenia (404)
- Wyliczenia obiektów (405)
- Określanie formatu danych urządzenia (405)
- Określanie poziomu współpracy (407)
- Modyfikacja właściwości urządzenia (407)
- Zajmowanie urządzenia (408)
- Pobieranie danych wejściowych (408)
- Bezpośredni dostęp do danych (408)
- Buforowanie danych (409)
- "Odpytywanie" urządzeń (409)
- Kończenie pracy z urządzeniem (409)
- Dodawanie urządzeń (399)
- Odwzorowania akcji (410)
- Tworzenie podsystemu wejścia (410)
- Przykład zastosowania systemu wejścia (418)
- Podsumowanie (420)
Rozdział 17. Zastosowania DirectX Audio (421)
- Dźwięk (421)
- Dźwięk i komputery (423)
- Cyfrowy zapis dźwięku (423)
- Synteza dźwięku (424)
- Dźwięk i komputery (423)
- Czym jest DirectX Audio? (425)
- Charakterystyka DirectX Audio (426)
- Obiekty ładujące (426)
- Segmenty i stany segmentów (426)
- Wykonanie (427)
- Komunikaty (427)
- Kanały wykonania (427)
- Syntezator DSL (427)
- Instrumenty i ładowanie dźwięków (427)
- Ścieżki dźwięku i bufory (428)
- Przepływ danych dźwięku (428)
- Charakterystyka DirectX Audio (426)
- Ładowanie i odtwarzanie dźwięku w DirectMusic (429)
- Inicjacja COM (430)
- Tworzenie i inicjacja obiektu wykonania (430)
- Tworzenie obiektu ładującego (431)
- Załadowanie segmentu (431)
- Ładowanie instrumentów (432)
- Odtwarzanie segmentu (432)
- Zatrzymanie odtwarzania segmentu (433)
- Kontrola odtwarzania segmentu (434)
- Określanie liczby odtworzeń segmentu (434)
- Kończenie odtwarzania dźwięku (435)
- Prosty przykład (435)
- Zastosowania ścieżek dźwięku (445)
- Domyślna ścieżka dźwięku (446)
- Standardowe ścieżki dźwięku (446)
- Odtwarzanie za pomocą ścieżki dźwięku (447)
- Pobieranie obiektów należących do ścieżek dźwięku (449)
- Dźwięk przestrzenny (450)
- Współrzędne przestrzeni dźwięku (450)
- Percepcja położenia źródła dźwięku (450)
- Bufor efektu przestrzennego w DirectSound (451)
- Parametry przestrzennego źródła dźwięku (451)
- Odległość minimalna i maksymalna (453)
- Tryb działania (453)
- Położenie i prędkość (454)
- Stożki dźwięku (454)
- Odbiorca efektu dźwięku przestrzennego (455)
- Przykład zastosowania efektu przestrzennego (456)
- Podsumowanie (468)
Rozdział 18. Modele trójwymiarowe (469)
- Formaty plików modeli trójwymiarowych (469)
- Format MD2 (470)
- Implementacja formatu MD2 (472)
- Ładowanie modelu MD2 (476)
- Wyświetlanie modelu MD2 (480)
- Pokrywanie modelu teksturą (482)
- Animacja modelu (483)
- Klasa CMD2Model (488)
- Sterowanie animacją modelu (498)
- Ładowanie plików PCX (501)
- Podsumowanie (503)
Rozdział 19. Modelowanie fizycznych właściwości świata (505)
- Powtórka z fizyki (505)
- Czas (505)
- Odległość, przemieszczenie i położenie (506)
- Prędkość (508)
- Przyspieszenie (509)
- Siła (510)
- Pierwsza zasada dynamiki (511)
- Druga zasada dynamiki (511)
- Trzecia zasada dynamiki (511)
- Pęd (511)
- Zasada zachowania pędu (512)
- Tarcie (513)
- Tarcie na płaszczyźnie (513)
- Tarcie na równi pochyłej (514)
- Modelowanie świata rzeczywistego (516)
- Rozkład problemu (516)
- Czas (517)
- Wektor (521)
- Płaszczyzna (526)
- Obiekt (529)
- Zderzenia obiektów (531)
- Sfery ograniczeń (532)
- Prostopadłościany ograniczeń (533)
- Zderzenia płaszczyzn (535)
- Obsługa zderzenia (538)
- Przykład: hokej (538)
- Świat hokeja (539)
- Lodowisko (539)
- Krążek i zderzenia (544)
- Gracz (550)
- Kompletowanie programu (553)
- Podsumowanie (559)
Rozdział 20. Tworzenie szkieletu gry (561)
- Architektura szkieletu SimpEngine (561)
- Zarządzanie danymi za pomocą obiektów klasy CNode (562)
- Zarządzanie obiektami: klasa CObject (566)
- Trzon szkieletu SimpEngine (570)
- System wejścia (572)
- Klasa CEngine (573)
- Cykl gry (574)
- Obsługa wejścia (575)
- Klasa CSimpEngine (576)
- Kamera (577)
- Świat gry (580)
- Obsługa modeli (580)
- System dźwięku (581)
- System cząstek (583)
- Podsumowanie (583)
Rozdział 21. Piszemy grę: "Czas zabijania" (585)
- Wstępny projekt (585)
- Świat gry (586)
- Przeciwnicy (588)
- Sztuczna inteligencja przeciwnika (589)
- Ogro (590)
- Sod (592)
- Rakiety i eksplozje (592)
- Interfejs użytkownika gry (594)
- Korzystanie z gry (594)
- Kompilacja gry (595)
- Podsumowanie (596)
Dodatki (597)
Dodatek A Zasoby sieci Internet (599)
- Programowanie gier (599)
- GameDev.net (599)
- Wyszukiwarka informacji związanych z programowaniem gier (600)
- flipCode (600)
- Gamasutra (600)
- OpenGL (600)
- NeHe Productions (600)
- OpenGL.org (601)
- Inne strony poświęcone OpenGL (601)
- DirectX (601)
- DirectX Developer Center (601)
- Lista mailingowa DirectX (601)
- Inne zasoby (602)
- ParticleSystems.com (602)
- Real-Time Rendering (602)
- Informacja techniczna dla programistów (602)
- Artykuły dotyczące efektu mgły (602)
Dodatek B Dysk CD (603)
- Struktura plików na dysku CD (603)
- Wymagania sprzętowe (603)
- Instalacja (604)
- Typowe problemy i ich rozwiązywanie (604)
Skorowidz (605)