Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00604 009788 10451054 na godz. na dobę w sumie
OpenGL. Programowanie gier - książka
OpenGL. Programowanie gier - książka
Autor: , Liczba stron: 632
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-035-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> gry >> opengl - programowanie
Porównaj ceny (książka, ebook, audiobook).
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:

'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)
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl OpenGL. Programowanie gier Autorzy: Kevin Hawkins, Dave Astle T³umaczenie: Jaromir Senczyk ISBN: 83-7361-035-9 Tytu³ orygina³u: OpenGL Game Programming Format: B5, stron: 630 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 Spis treści List od wydawcy serii............................................a................................. 15 O Autorach...................................................a......................................... 17 Przedmowa...................................................a......................................... 19 Wprowadzenie ...................................................a.................................... 21 Część I Wprowadzenie do OpenGL i DirectX ......................................23 Rozdział 1. OpenGL i DirectX ...................................................a................................ 25 Dlaczego tworzymy gry? ...................................................t............................................ 25 Świat gier...................................................t...................................................t...............26 Elementy gry ...................................................t...................................................t.......... 26 Narzędzia ...................................................t...................................................t............... 28 OpenGL...................................................t...................................................t................. 30 Historia OpenGL...................................................t.................................................. 30 Architektura OpenGL ...................................................t........................................... 31 Biblioteka GLU...................................................t...................................................t. 31 Pakiet bibliotek GLUT...................................................t.......................................... 32 Programy...................................................t...................................................t.......... 33 DirectX ...................................................t...................................................t..................33 Historia DirectX ...................................................t...................................................t 34 Architektura DirectX ...................................................t............................................ 35 DirectX Graphics ...................................................t............................................36 DirectX Audio ...................................................t................................................36 DirectInput...................................................t...................................................t..36 DirectPlay...................................................t...................................................t...36 DirectShow ...................................................t...................................................t.36 DirectSetup ...................................................t...................................................t.37 Porównanie OpenGL i DirectX...................................................t.................................... 37 Podsumowanie...................................................t...................................................t........ 37 Rozdział 2. Korzystanie z OpenGL w systemie Windows ............................................ 39 Wprowadzenie do programowania w systemie Windows .................................................. 39 Podstawowa aplikacja systemu Windows...................................................t................ 41 Funkcja WinMain() ...................................................t.............................................. 42 Procedura okienkowa...................................................t............................................ 42 Obsługa komunikatów...................................................t.....................................43 Klasy okien...................................................t...................................................t....... 44 Określenie atrybutów klasy okna...................................................t......................45 Ładowanie ikon i kursora myszy...................................................t......................46 6 OpenGL. Programowanie gier Rejestracja klasy ...................................................t.................................................. 48 Tworzenia okna ...................................................t...................................................t 48 Pętla przetwarzania komunikatów ...................................................t.......................... 50 Kompletna aplikacja systemu Windows...................................................t.................. 52 Wprowadzenie do funkcji WGL ...................................................t.................................. 55 Kontekst tworzenia grafiki ...................................................t.................................... 56 Korzystanie z funkcji WGL...................................................t................................... 56 Funkcja wglCreateContext() ...................................................t............................56 Funkcja wglDeleteContext() ...................................................t............................56 Funkcja wglMakeCurrent()...................................................t..............................57 Formaty pikseli ...................................................t...................................................t....... 58 Pole nSize...................................................t...................................................t......... 58 Pole dwFlags ...................................................t...................................................t.... 59 Pole iPixelType...................................................t...................................................t. 59 Pole cColorBits ...................................................t...................................................t. 59 Aplikacja OpenGL w systemie Windows...................................................t...................... 60 Pełnoekranowe aplikacje OpenGL ...................................................t............................... 67 Podsumowanie...................................................t...................................................t........ 69 Rozdział 3. Przegląd teorii grafiki trójwymiarowej ...................................................a.. 71 Skalary, punkty i wektory ...................................................t........................................... 71 Długość wektora ...................................................t.................................................. 72 Normalizacja wektora ...................................................t........................................... 72 Dodawanie wektorów ...................................................t........................................... 73 Mnożenie wektora przez skalar...................................................t.............................. 73 Iloczyn skalarny wektorów...................................................t.................................... 73 Iloczyn wektorowy...................................................t............................................... 74 Macierze ...................................................t...................................................t................ 75 Macierz jednostkowa ...................................................t............................................ 75 Macierz zerowa...................................................t...................................................t. 75 Dodawanie i odejmowanie macierzy ...................................................t...................... 76 Mnożenie macierzy...................................................t............................................... 76 Implementacja działań na macierzach...................................................t..................... 78 Przekształcenia ...................................................t...................................................t....... 79 Przesunięcie...................................................t...................................................t...... 80 Obrót ...................................................t...................................................t............... 80 Skalowanie ...................................................t...................................................t....... 82 Rzutowanie...................................................t...................................................t............. 82 Rzutowanie izometryczne...................................................t...................................... 83 Rzutowanie perspektywiczne...................................................t................................. 84 Obcinanie ...................................................t...................................................t............... 86 Światło...................................................t...................................................t................... 86 Światło otoczenia ...................................................t................................................. 87 Światło rozproszone ...................................................t............................................. 87 Światło odbijane...................................................t...................................................t 88 Odwzorowania tekstur...................................................t................................................ 88 Podsumowanie...................................................t...................................................t........ 89 Część II Korzystanie z OpenGL...................................................r.........91 Rozdział 4. Maszyna stanów OpenGL i podstawowe elementy grafiki......................... 93 Funkcje stanu ...................................................t...................................................t......... 93 Podstawowe elementy grafiki ...................................................t...................................... 99 Tworzenie punktów w trójwymiarowej przestrzeni ...................................................t 100 Zmiana rozmiaru punktów ...................................................t............................. 101 Antialiasing...................................................t.................................................. 101 Spis treści 7 Odcinki ...................................................t...................................................t.......... 102 Zmiana szerokości odcinka ...................................................t............................ 103 Antialiasing odcinków...................................................t................................... 103 Wzór linii odcinka ...................................................t........................................ 103 Wielokąty ...................................................t...................................................t....... 104 Ukrywanie powierzchni wielokątów ...................................................t............... 105 Ukrywanie krawędzi wielokątów...................................................t.................... 106 Antialiasing wielokątów ...................................................t................................ 106 Wzór wypełnienia wielokątów ...................................................t....................... 107 Trójkąty...................................................t...................................................t.... 107 Czworokąty...................................................t.................................................. 108 Dowolne wielokąty ...................................................t....................................... 109 Przykład wykorzystania podstawowych elementów grafiki........................................ 109 Podsumowanie...................................................t...................................................t...... 110 Rozdział 5. Przekształcenia układu współrzędnych i macierze OpenGL ..................... 111 Przekształcenia układu współrzędnych...................................................t....................... 111 Współrzędne kamery i obserwatora...................................................t...................... 113 Przekształcenia widoku...................................................t....................................... 114 Wykorzystanie funkcji gluLookAt() ...................................................t............... 114 Wykorzystanie funkcji glRotate*() i glTranslate*()............................................. 115 Własne procedury przekształceń widoku...................................................t......... 116 Przekształcenia modelowania ...................................................t.............................. 117 Rzutowanie...................................................t...................................................t..... 118 Przekształcenie okienkowe ...................................................t.................................. 118 OpenGL i macierze ...................................................t.................................................. 119 Macierz modelowania ...................................................t......................................... 119 Przesunięcie...................................................t...................................................t.... 120 Obrót ...................................................t...................................................t............. 120 Skalowanie ...................................................t...................................................t..... 122 Stos macierzy...................................................t...................................................t.. 123 Model robota ...................................................t...................................................t.. 124 Rzutowanie...................................................t...................................................t........... 132 Rzutowanie ortograficzne...................................................t.................................... 133 Rzutowanie perspektywiczne...................................................t............................... 134 Okno widoku ...................................................t...................................................t.. 135 Przykład rzutowania ...................................................t........................................... 136 Wykorzystanie własnych macierzy przekształceń...................................................t........ 138 Ładowanie elementów macierzy ...................................................t.......................... 138 Mnożenie macierzy...................................................t............................................. 139 Przykład zastosowania macierzy definiowanych...................................................t.... 139 Podsumowanie...................................................t...................................................t...... 140 Rozdział 6. Kolory, łączenie kolorów i oświetlenie .................................................. 141 Czym są kolory? ...................................................t...................................................t... 141 Kolory w OpenGL ...................................................t...................................................t 142 Głębia koloru ...................................................t...................................................t.. 143 Sześcian kolorów...................................................t................................................ 143 Model RGBA w OpenGL ...................................................t................................... 143 Model indeksowany w OpenGL...................................................t........................... 144 Cieniowanie...................................................t...................................................t.......... 145 Oświetlenie...................................................t...................................................t........... 147 Oświetlenie w OpenGL i w realnym świecie ...................................................t......... 147 Materiały...................................................t...................................................t........ 148 8 OpenGL. Programowanie gier Normalne...................................................t...................................................t........ 148 Obliczanie normalnych...................................................t.................................. 149 Użycie normalnych ...................................................t....................................... 151 Normalne jednostkowe...................................................t.................................. 152 Korzystanie z oświetlenia w OpenGL...................................................t................... 153 Tworzenie źródeł światła ...................................................t............................... 158 Położenie źródła światła ...................................................t................................ 159 Tłumienie...................................................t...................................................t.. 160 Strumień światła ...................................................t........................................... 160 Definiowanie materiałów...................................................t............................... 163 Modele oświetlenia ...................................................t....................................... 164 Efekty odbicia ...................................................t.............................................. 166 Ruchome źródła światła...................................................t................................. 167 Łączenie kolorów ...................................................t...................................................t.. 173 Przezroczystość ...................................................t................................................. 174 Podsumowanie...................................................t...................................................t...... 179 Rozdział 7. Mapy bitowe i obrazy w OpenGL ...................................................a........ 181 Mapy bitowe w OpenGL ...................................................t.......................................... 181 Umieszczanie map bitowych ...................................................t............................... 182 Rysowanie mapy bitowej ...................................................t.................................... 183 Przykład zastosowania mapy bitowej ...................................................t................... 183 Wykorzystanie obrazów graficznych...................................................t.......................... 185 Rysowanie obrazów graficznych...................................................t.......................... 185 Odczytywanie obrazu z ekranu...................................................t............................ 187 Kopiowanie danych ekranu ...................................................t................................. 187 Powiększanie, pomniejszanie i tworzenie odbić...................................................t..... 188 Upakowanie danych mapy pikseli ...................................................t.............................. 188 Mapy bitowe systemu Windows ...................................................t................................ 188 Format plików BMP...................................................t........................................... 189 Ładowanie plików BMP ...................................................t..................................... 190 Zapis obrazu w pliku BMP...................................................t.................................. 191 Pliki graficzne Targa ...................................................t................................................ 193 Format plików Targa ...................................................t.......................................... 193 Ładowanie zawartości pliku Targa ...................................................t....................... 194 Zapis obrazów w plikach Targa ...................................................t........................... 196 Podsumowanie...................................................t...................................................t...... 197 Rozdział 8. Odwzorowania tekstur ...................................................a...................... 199 Odwzorowania tekstur...................................................t.............................................. 199 Przykład zastosowania tekstury ...................................................t........................... 200 Mapy tekstur ...................................................t...................................................t........ 205 Tekstury dwuwymiarowe ...................................................t.................................... 205 Tekstury jednowymiarowe ...................................................t.................................. 206 Tekstury trójwymiarowe ...................................................t..................................... 206 Obiekty tekstur ...................................................t...................................................t..... 207 Tworzenie nazwy tekstury ...................................................t.................................. 207 Tworzenie i stosowanie obiektów tekstur...................................................t.............. 207 Filtrowanie tekstur ...................................................t...................................................t 208 Funkcje tekstur ...................................................t...................................................t..... 209 Współrzędne tekstury ...................................................t............................................... 209 Powtarzanie i rozciąganie tekstur...................................................t......................... 210 Mipmapy i poziomy szczegółowości ...................................................t.......................... 212 Automatyczne tworzenie mipmap ...................................................t........................ 213 Spis treści 9 Animacja powiewającej flagi...................................................t..................................... 213 Objaśnienia...................................................t...................................................t..... 214 Implementacja...................................................t...................................................t. 214 Ukształtowanie terenu ...................................................t.............................................. 223 Objaśnienia...................................................t...................................................t..... 223 Implementacja...................................................t...................................................t. 227 Podsumowanie...................................................t...................................................t...... 235 Rozdział 9. Zaawansowane odwzorowania tekstur.................................................a. 237 Tekstury wielokrotne ...................................................t................................................ 237 Sprawdzanie dostępności tekstur wielokrotnych ...................................................t.... 238 Dostęp do funkcji rozszerzeń...................................................t............................... 239 Tworzenie jednostek tekstury...................................................t.............................. 240 Określanie współrzędnych tekstury ...................................................t...................... 241 Przykład zastosowania tekstur wielokrotnych...................................................t........ 242 Odwzorowanie otoczenia ...................................................t.......................................... 250 Torus na niebie...................................................t...................................................t 250 Macierze tekstur...................................................t...................................................t.... 253 Mapy oświetlenia ...................................................t...................................................t.. 255 Stosowanie map oświetlenia ...................................................t................................ 255 Wieloprzebiegowe tekstury wielokrotne ...................................................t..................... 261 Podsumowanie...................................................t...................................................t...... 265 Rozdział 10. Listy wyświetlania i tablice wierzchołków ............................................. 267 Listy wyświetlania...................................................t...................................................t. 267 Tworzenie listy wyświetlania...................................................t............................... 268 Umieszczanie poleceń na liście wyświetlania ...................................................t........ 268 Wykonywanie list wyświetlania...................................................t........................... 269 Uwagi dotyczące list wyświetlania ...................................................t....................... 271 Usuwanie list wyświetlania ...................................................t................................. 271 Listy wyświetlania i tekstury ...................................................t............................... 272 Przykład: animacja robota z użyciem list wyświetlania ............................................. 273 Tablice wierzchołków...................................................t............................................... 274 Obsługa tablic wierzchołków w OpenGL...................................................t.............. 275 Stosowanie tablic wierzchołków ...................................................t.......................... 276 glDrawArrays() ...................................................t............................................ 278 glDrawElements()...................................................t......................................... 278 glDrawRangeElements()...................................................t................................ 279 glArrayElement()...................................................t.......................................... 279 Tablice wierzchołków i tekstury wielokrotne ...................................................t........ 280 Blokowanie tablic wierzchołków ...................................................t......................... 280 Przykład: ukształtowanie terenu po raz drugi...................................................t......... 281 Podsumowanie...................................................t...................................................t...... 284 Rozdział 11. Wyświetlanie tekstów................................................a.......................... 285 Czcionki rastrowe ...................................................t...................................................t. 285 Czcionki konturowe ...................................................t................................................. 289 Czcionki pokryte teksturą ...................................................t......................................... 292 Podsumowanie...................................................t...................................................t...... 299 Rozdział 12. Bufory OpenGL..................................................a................................... 301 Bufory OpenGL — wprowadzenie...................................................t............................. 301 Konfiguracja formatu pikseli ...................................................t............................... 301 Opróżnianie buforów ...................................................t.......................................... 304 Bufor koloru...................................................t...................................................t......... 305 Podwójne buforowanie ...................................................t....................................... 305 Buforowanie stereoskopowe...................................................t................................ 306 10 OpenGL. Programowanie gier Bufor głębi ...................................................t...................................................t........... 306 Funkcje porównania głębi ...................................................t................................... 307 Zastosowania bufora głębi...................................................t................................... 307 Bufor powielania...................................................t...................................................t... 316 Przykład zastosowania bufora powielania ...................................................t............. 319 Bufor akumulacji...................................................t...................................................t... 324 Podsumowanie...................................................t...................................................t...... 326 Rozdział 13. Powierzchnie drugiego stopnia ...................................................a.......... 327 Powierzchnie drugiego stopnia w OpenGL...................................................t................. 327 Styl powierzchni...................................................t................................................. 328 Wektory normalne...................................................t.............................................. 328 Orientacja ...................................................t...................................................t....... 329 Współrzędne tekstury ...................................................t......................................... 329 Usuwanie obiektów powierzchni...................................................t.......................... 329 Dyski ...................................................t...................................................t................... 329 Walce...................................................t...................................................t................... 331 Kule...................................................t...................................................t.....................332 Przykład użycia powierzchni drugiego stopnia ...................................................t............ 333 Podsumowanie...................................................t...................................................t...... 336 Rozdział 14. Krzywe i powierzchnie...................................................a....................... 337 Reprezentacja krzywych i powierzchni...................................................t....................... 337 Równania parametryczne ...................................................t.................................... 338 Punkty kontrolne i pojęcie ciągłości ...................................................t..................... 338 Ewaluatory ...................................................t...................................................t........... 339 Siatka równoodległa ...................................................t........................................... 342 Powierzchnie ...................................................t...................................................t........ 343 Pokrywanie powierzchni teksturami ...................................................t..................... 346 Powierzchnie B-sklejane ...................................................t........................................... 350 Podsumowanie...................................................t...................................................t...... 354 Rozdział 15. Efekty specjalne ...................................................a............................... 355 Plakatowanie ...................................................t...................................................t........ 355 Przykład: kaktusy na pustyni ...................................................t............................... 357 Zastosowania systemów cząstek...................................................t................................ 359 Cząstki ...................................................t...................................................t........... 359 Położenie ...................................................t...................................................t.. 360 Prędkość...................................................t...................................................t... 360 Czas życia...................................................t...................................................t. 360 Rozmiar...................................................t...................................................t.... 361 Masa ...................................................t...................................................t........ 361 Reprezentacja...................................................t............................................... 361 Kolor...................................................t...................................................t........ 361 Przynależność ...................................................t.............................................. 362 Metody...................................................t...................................................t..... 362 Systemy cząstek...................................................t................................................. 362 Lista cząstek...................................................t................................................. 362 Położenie ...................................................t...................................................t.. 362 Częstość emisji ...................................................t............................................. 363 Oddziaływania...................................................t.............................................. 363 Atrybuty cząstek, zakresy ich wartości i wartości domyślne................................. 363 Stan bieżący...................................................t................................................. 364 Łączenie kolorów...................................................t.......................................... 364 Reprezentacja...................................................t............................................... 364 Metody...................................................t...................................................t..... 364 Spis treści 11 Menedżer systemów cząstek ...................................................t............................... 365 Implementacja...................................................t...................................................t. 365 Tworzenie efektów za pomocą systemów cząstek...................................................t.. 368 Przykład: śnieżyca ...................................................t.............................................. 369 Mgła ...................................................t...................................................t.................... 373 Mgła w OpenGL ...................................................t................................................ 374 Mgła objętościowa...................................................t.............................................. 375 Odbicia ...................................................t...................................................t................ 375 Odbicia światła...................................................t...................................................t 376 Obsługa bufora głębi...................................................t........................................... 376 Obsługa skończonych płaszczyzn za pomocą bufora powielania ................................ 377 Tworzenie nieregularnych odbić ...................................................t.......................... 378 Odbicia na dowolnie zorientowanych płaszczyznach ................................................ 378 Cienie ...................................................t...................................................t.................. 379 Cienie statyczne ...................................................t................................................. 379 Rzutowanie cieni ...................................................t................................................ 380 Macierz rzutowania cieni...................................................t............................... 380 Problemy z buforem głębi...................................................t.............................. 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 ...................................................t......... 382 Bryły cieni w buforze powielania...................................................t......................... 383 Inne metody...................................................t...................................................t.... 384 Przykład: odbicia i cienie ...................................................t.................................... 384 Podsumowanie...................................................t...................................................t...... 387 Część III Tworzymy grę...................................................r...................389 Rozdział 16. DirectX: DirectInput.................................................a............................ 391 Dlaczego DirectInput? ...................................................t.............................................. 391 Komunikaty systemu Windows...................................................t............................ 391 Interfejs programowy Win32...................................................t............................... 394 Win32 i obsługa klawiatury ...................................................t........................... 394 Win32 i obsługa manipulatorów ...................................................t..................... 396 DirectInput ...................................................t...................................................t..... 397 Inicjacja interfejsu DirectInput ...................................................t.................................. 397 Wartości zwracane przez funkcje DirectInput ...................................................t....... 398 Korzystanie z DirectInput ...................................................t......................................... 399 Dodawanie urządzeń...................................................t........................................... 399 Tworzenie urządzeń...................................................t...................................... 400 Tworzenie wyliczenia urządzeń...................................................t...................... 400 Sprawdzanie możliwości urządzenia...................................................t............... 404 Wyliczenia obiektów...................................................t..................................... 405 Określanie formatu danych urządzenia...................................................t............ 405 Określanie poziomu współpracy...................................................t..................... 407 Modyfikacja właściwości urządzenia ...................................................t.............. 407 Zajmowanie urządzenia ...................................................t................................. 408 Pobieranie danych wejściowych...................................................t........................... 408 Bezpośredni dostęp do danych...................................................t....................... 408 Buforowanie danych ...................................................t..................................... 409 „Odpytywanie” urządzeń...................................................t............................... 409 Kończenie pracy z urządzeniem...................................................t........................... 409 Odwzorowania akcji ...................................................t................................................. 410 Tworzenie podsystemu wejścia ...................................................t................................. 410 Przykład zastosowania systemu wejścia ...................................................t..................... 418 Podsumowanie...................................................t...................................................t...... 420 12 OpenGL. Programowanie gier Rozdział 17. Zastosowania DirectX Audio ...................................................a............. 421 Dźwięk...................................................t...................................................t................. 421 Dźwięk i komputery ...................................................t........................................... 423 Cyfrowy zapis dźwięku ...................................................t................................. 423 Synteza dźwięku...................................................t........................................... 424 Czym jest DirectX Audio? ...................................................t........................................ 425 Charakterystyka DirectX Audio...................................................t........................... 426 Obiekty ładujące ...................................................t........................................... 426 Segmenty i stany segmentów ...................................................t......................... 426 Wykonanie...................................................t...................................................t 427 Komunikaty ...................................................t................................................. 427 Kanały wykonania ...................................................t........................................ 427 Syntezator DSL...................................................t............................................ 427 Instrumenty i ładowanie dźwięków...................................................t................. 427 Ścieżki dźwięku i bufory ...................................................t............................... 428 Przepływ danych dźwięku...................................................t................................... 428 Ładowanie i odtwarzanie dźwięku w DirectMusic ...................................................t....... 429 Inicjacja COM ...................................................t...................................................t 430 Tworzenie i inicjacja obiektu wykonania ...................................................t.............. 430 Tworzenie obiektu ładującego ...................................................t............................. 431 Załadowanie segmentu...................................................t........................................ 431 Ładowanie instrumentów ...................................................t.................................... 432 Odtwarzanie segmentu ...................................................t........................................ 432 Zatrzymanie odtwarzania segmentu...................................................t...................... 433 Kontrola odtwarzania segmentu...................................................t........................... 434 Określanie liczby odtworzeń segmentu...................................................t................. 434 Kończenie odtwarzania dźwięku ...................................................t.......................... 435 Prosty przykład ...................................................t...................................................t..... 435 Zastosowania ścieżek dźwięku ...................................................t.................................. 445 Domyślna ścieżka dźwięku...................................................t.................................. 446 Standardowe ścieżki dźwięku ...................................................t.............................. 446 Odtwarzanie za pomocą ścieżki dźwięku ...................................................t.............. 447 Pobieranie obiektów należących do ścieżek dźwięku ................................................ 449 Dźwięk przestrzenny ...................................................t................................................ 450 Współrzędne przestrzeni dźwięku ...................................................t........................ 450 Percepcja położenia źródła dźwięku ...................................................t..................... 450 Bufor efektu przestrzennego w DirectSound ...................................................t......... 451 Parametry przestrzennego źródła dźwięku...................................................t............. 451 Odległość minimalna i maksymalna...................................................t................ 453 Tryb działania...................................................t............................................... 453 Położenie i prędkość ...................................................t..................................... 454 Stożki dźwięku ...................................................t............................................. 454 Odbiorca efektu dźwięku przestrzennego...................................................t.............. 455 Przykład zastosowania efektu przestrzennego ...................................................t....... 456 Podsumowanie...................................................t...................................................t...... 468 Rozdział 18. Modele trójwymiarowe...................................................a...................... 469 Formaty plików modeli trójwymiarowych ...................................................t.................. 469 Format MD2...................................................t...................................................t......... 470 Implementacja formatu MD2...................................................t............................... 472 Ładowanie modelu MD2...................................................t..................................... 476 Wyświetlanie modelu MD2...................................................t................................. 480 Pokrywanie modelu teksturą...................................................t................................ 482 Animacja modelu ...................................................t............................................... 483 Spis treści 13 Klasa CMD2Model...................................................t............................................. 488 Sterowanie animacją modelu ...................................................t............................... 498 Ładowanie plików PCX...................................................t............................................ 501 Podsumowanie...................................................t...................................................t...... 503 Rozdział 19. Modelowanie fizycznych właściwości świata......................................... 505 Powtórka z fizyki ...................................................t...................................................t.. 505 Czas...................................................t...................................................t............... 505 Odległość, przemieszczenie i położenie ...................................................t................ 506 Prędkość ...................................................t...................................................t........ 508 Przyspieszenie...................................................t...................................................t. 509 Siła ...................................................t...................................................t................ 510 Pierwsza zasada dynamiki ...................................................t............................. 511 Druga zasada dynamiki ...................................................t................................. 511 Trzecia zasada dynamiki...................................................t................................ 511 Pęd ...................................................t...................................................t................ 511 Zasada zachowania pędu ...................................................t............................... 512 Tarcie...................................................t...................................................t............. 513 Tarcie na płaszczyźnie...................................................t................................... 513 Tarcie na równi pochyłej ...................................................t............................... 514 Modelowanie świata rzeczywistego ...................................................t........................... 516 Rozkład problemu ...................................................t.............................................. 516 Czas...................................................t...................................................t............... 517 Wektor...................................................t...................................................t........... 521 Płaszczyzna ...................................................t...................................................t.... 526 Obiekt ...................................................t...................................................t............ 529 Zderzenia obiektów ...................................................t............................................ 531 Sfery ograniczeń...................................................t........................................... 532 Prostopadłościany ograniczeń ...................................................t........................ 533 Zderzenia płaszczyzn ...................................................t.................................... 535 Obsługa zderzenia...................................................t......................................... 538 Przykład: hokej ...................................................t.................................................. 538 Świat hokeja...................................................t................................................. 539 Lodowisko ...................................................t...................................................t 539 Krążek i zderzenia ...................................................t........................................ 544 Gracz...................................................t...................................................t........ 550 Kompletowanie programu...................................................t.............................. 553 Podsumowanie...................................................t...................................................t...... 559 Rozdział 20. Tworzenie szkieletu gry...................................................a..................... 561 Architektura szkieletu SimpEngine ...................................................t............................ 561 Zarządzanie danymi za pomocą obiektów klasy CNode ............................................ 562 Zarządzanie obiektami: klasa CObject...................................................t.................. 566 Trzon szkieletu SimpEngine...................................................t...................................... 570 System wejścia...................................................t...................................................t 572 Klasa CEngine ...................................................t...................................................t 573 Cykl gry ...................................................t...................................................t......... 574 Obsługa wejścia ...................................................t................................................. 575 Klasa CSimpEngine...................................................t............................................ 576 Kamera ...................................................t...................................................t................ 577 Świat gry...................................................t...................................................t.............. 580 Obsługa modeli ...................................................t...................................................t..... 580 System dźwięku...................................................t...................................................t.... 581 System cząstek ...................................................t...................................................t..... 583 Podsumowanie...................................................t...................................................t...... 583 14 OpenGL. Programowanie gier Rozdział 21. Piszemy grę: „Czas zabijania” ...................................................a........... 585 Wstępny projekt..................................................t...................................................t..... 585 Świat gry...................................................t...................................................t.............. 586 Przeciwnicy ...................................................t...................................................t.......... 588 Sztuczna inteligencja przeciwnika...................................................t........................ 589 Ogro...................................................t...................................................t............... 590 Sod ...................................................t...................................................t................ 592 Rakiety i eksplozje ...................................................t...................................................t 592 Interfejs użytkownika gry...................................................t.......................................... 594 Korzystanie z gry ...................................................t...................................................t.. 594 Kompilacja gry ...................................................t...................................................t..... 595 Podsumowanie...................................................t...................................................t...... 596 Dodatki ...................................................r............................................597 Dodatek A Zasoby sieci Internet...................................................a........................ 599 Programowanie gier...................................................t.................................................. 599 GameDev.net...................................................t...................................................t.. 599 Wyszukiwarka informacji związanych z programowaniem gier ................................. 600 flipCode ...................................................t...................................................t......... 600 Gamasutra ...................................................t...................................................t...... 600 OpenGL...................................................t...................................................t............... 600 NeHe Productions ...................................................t.............................................. 600 OpenGL.org...................................................t...................................................t.... 601 Inne strony poświęcone OpenGL...................................................t......................... 601 DirectX ...................................................t...................................................t................ 601 DirectX Developer Center...................................................t................................... 601 Lista mailingowa DirectX ...................................................t................................... 601 Inne zasoby ...................................................t...................................................t.......... 602 ParticleSystems.com...................................................t........................................... 602 Real-Time Rendering...................................................t.......................................... 602 Informacja techniczna dla programistów...................................................t............... 602 Artykuły dotyczące efektu mgły...................................................t........................... 602 Dodatek B Dysk CD ...................................................a........................................... 603 Struktura plików na dysku CD...................................................t................................... 603 Wymagania sprzętowe...................................................t.............................................. 603 Instalacja ...................................................t...................................................t.............. 604 Typowe problemy i ich rozwiązywanie ...................................................t...................... 604 Skorowidz...........................................a................................................. 605 Rozdział 9. Zaawansowane odwzorowania tekstur W rodziale tym przedstawione zostaną zaawansowane techniki tworzenia tekstur, które pozwolą kolejny raz na zwiększenie realizmu tworzonej grafiki. Omówione zostaną na- stępujące zagadnienia:  tekstury wielokrotne;  mapy otoczenia;  macierz tekstur;  mapy oświetlenia;  wieloprzebiegowe tworzenie tekstur wielokrotnych. Zastosowanie każdego z wymienionych efektów powoduje, że grafika trójwymiarowa nabiera jeszcze doskonalszego wyglądu. Tekstury wielokrotne Dotychczas wykorzystywana była pojedyncza tekstura dla każdego wielokąta. OpenGL umożliwia jednak pokrycie wielokąta sekwencją tekstur, czyli tworzenie tekstur wielo- krotnych. Możliwość ta stanowi obecnie jedynie rozszerzenie specyfikacji OpenGL. Roz- szerzenia interfejsu programowego OpenGL zatwierdzane są przez radę ARB (Archi- tectural Review Board) nadzorującą rozwój specyfikacji OpenGL. Tekstury wielokrotne stanowią opcjonalne rozszerzenie OpenGL i nie są dostępne w każdej implementacji. Tekstury wielokrotne tworzone są za pomocą sekwencji jednostek tekstury. Jednostki tekstury omówione zostaną szczegółowo w dalszej części rozdziału. Obecnie wystarczy jedynie informacja dotycząca tego, że każda jednostka tekstury reprezentuje pojedynczą teksturę, a także to, że podczas tworzenia tekstury wielokrotnej każda jednostka tekstury przekazuje wynik jej zastosowania kolejnej jednostce tekstury aż do utworzenia końcowej tekstury wielokrotnej. Rysunek 9.1 ilustruje proces tworzenia tekstur wielokrotnych. 238 Część II  Korzystanie z OpenGL Rysunek 9.1. Tekstura wielokrotna powstaje na skutek nałożenia na wielokąt więcej niż jednej tekstury za pomocą jednostek tekstur W procesie tworzenia tekstury wielokrotnej można wyróżnić cztery główne etapy. 1. Sprawdzenie, czy implementacja OpenGL udostępnia możliwość tworzenia tekstur wielokrotnych. 2. Uzyskanie wskaźnika funkcji rozszerzenia. 3. Tworzenie jednostki tekstury. 4. Określenie współrzędnych tekstury. Teraz należy przyjrzeć się bliżej każdemu z wymienionych etapów. Sprawdzanie dostępności tekstur wielokrotnych Przed rozpoczęciem stosowania tekstur wielokrotnych trzeba najpierw sprawdzić, czy udostępnia je używana implementacja OpenGL. Tekstury wielokrotne są rozszerzeniem specyfikacji OpenGL zaaprobowanym przez radę ARB. Listę takich rozszerzeń udo- stępnianych przez konkretną implementację można uzyskać wywołując funkcję IN)GV 5VTKPI z parametrem ).A :6 05+105. Lista ta posiada postać łańcucha znaków, w któ- rym nazwy kolejnych rozszerzeń rozdzielone są znakami spacji. Jeśli w łańcuchu tym znaleziona zostanie nazwa ).A#4$AOWNVKVGZVWTG, to oznacza to dostępność tekstur wie- lokrotnych. W celu sprawdzenia dostępności konkretnego rozszerzenia OpenGL można skorzystać z dostępnej w bibliotece GLU funkcji INW JGEM ZVGPUKQP o następującym prototypie: ).DQQNGCPINW JGEM ZVGPUKQP EJCT GZV0COGEQPUV).WD[VG GZV5VTKPI  Funkcja ta zwraca wartość VTWG, jeśli nazwa rozszerzenia GZV0COG znajduje się w łańcuchu GZV5VTKPI lub wartość HCNUG w przeciwnym razie. Łańcuch zwrócony przez funkcję IN)GV5VTKPI można także przeszukać indywidualnie. Oto przykład implementacji odpowiedniej funkcji: Rozdział 9.  Zaawansowane odwzorowania tekstur 239 DQQN+P5VT EJCT UGCTEJ5VTEJCT UVT ] EJCT GPF1H5VTYUMCļPKMQUVCVPIKGIQ\PCMWđCēEWEJC KPVKFZ GPF1H5VTUVT UVTNGP UVT QUVCVPK\PCMđCēEIWEJC RúVNC
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

OpenGL. Programowanie gier
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: