Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00477 007426 10473030 na godz. na dobę w sumie
Visual Basic i DirectX. Programowanie gier w Windows - książka
Visual Basic i DirectX. Programowanie gier w Windows - książka
Autor: Liczba stron: 416
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-806-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> visual basic - programowanie
Porównaj ceny (książka, ebook, audiobook).

Książka opisuje krok po kroku tworzenie gry symulacyjnej rozgrywającej się w czasie rzeczywistym, podobnej do słynnej gry SimCity. Gra wykorzystuje Direct3D do wyświetlania grafiki trójwymiarowej oraz DirectInput do komunikacji z użytkownikiem. Opisane zostały interfejsy DirectSound i DirectMusic w stopniu umożliwiającym użycie efektów dźwiękowych i muzyki w grze. Nauczysz się więc tworzenia w pełni trójwymiarowej grafiki a także odtwarzania plików dźwiękowych w formacie MP3. Książka przeznaczona jest dla osób, które już programowały w Visual Basicu.

W książce opisano:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Visual Basic i DirectX. Programowanie gier w Windows Autor: Wayne S. Freeze T³umaczenie: Jaros³aw Dobrzañski ISBN: 83-7197-806-5 Tytu³ orygina³u: Window Game Programming with Visual Basic and DirectX Format: B5, stron: 410 Ksi¹¿ka opisuje krok po kroku tworzenie gry symulacyjnej rozgrywaj¹cej siê w czasie rzeczywistym, podobnej do s³ynnej gry SimCity. Gra wykorzystuje Direct3D do wyġwietlania grafiki trójwymiarowej oraz DirectInput do komunikacji z u¿ytkownikiem. Opisane zosta³y interfejsy DirectSound i DirectMusic w stopniu umo¿liwiaj¹cym u¿ycie efektów dĥwiêkowych i muzyki w grze. Nauczysz siê wiêc tworzenia w pe³ni trójwymiarowej grafiki a tak¿e odtwarzania plików dĥwiêkowych w formacie MP3. Ksi¹¿ka przeznaczona jest dla osób, które ju¿ programowa³y w Visual Basicu. W ksi¹¿ce opisano: • Wyġwietlanie grafiki 3D za pomoc¹ Direct3D • Sterowanie obrazem: obracanie, przybli¿anie i przewijanie • Tworzenie animowanych postaci • Operowanie czasem w symulacjach • Odtwarzanie muzyki i efektów dĥwiêkowych przy u¿yciu DirectAudio • Interakcje u¿ytkownik — program za pomoc¹ DirectInput • Syntezê mowy przy u¿yciu interfejsu Microsoft Speech API • Przygotowywanie grafiki 2D i 3D oraz plików dĥwiêkowych na potrzeby gry Autor, Wayne S. Freeze, jest programist¹ z 25 letnim doġwiadczeniem i autorem licznych publikacji na tematy zwi¹zane z jêzykiem Visual Basic, baz¹ danych Microsoft SQL Server i technologi¹ ASP. 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 Spis treści O Autorze ......................................................................................... 13 Wstęp .............................................................................................. 15 Tworzenie gry komputerowej ...................................................g........................................16 Rodzaje gier ...................................................g...................................................g..........16 Visual Basic ...................................................g...................................................g..........17 DirectX...................................................g...................................................g..................18 Gra „Podwodne zakupy”...................................................g..........................................18 Wyzwanie dla czytelnika ...................................................g...............................................19 Dla kogo jest ta książka...................................................g..................................................19 Wymagania sprzętowe ...................................................g...................................................g20 Co zawiera książka...................................................g...................................................g......21 Czego książka nie zawiera ...................................................g.............................................21 Konwencje stosowane w książce ...................................................g...................................22 Pytania i komentarze ...................................................g...................................................g...22 Pozostałe zasoby ...................................................g...................................................g.........23 Część I Zanurzenie się w grę ...................................................n...25 Rozdział 1. Od pomysłu do gry ............................................................................ 27 Projektowanie gry ...................................................g...................................................g.......27 Projekt gry „Podwodne zakupy” ...................................................g....................................28 Idea...................................................g...................................................g........................28 Fabuła...................................................g...................................................g....................29 Możliwości gry ...................................................g...................................................g.....30 Obiekty w grze...................................................g...................................................g......30 Interakcja z użytkownikiem...................................................g.....................................31 Aspekty kontrolowane przez symulację ...................................................g..................33 Zmienne w grze...................................................g...................................................g.....34 Tajne kody ...................................................g...................................................g............34 Niespodzianki ...................................................g...................................................g.......35 Podsumowanie ...................................................g...................................................g............35 Rozdział 2. Wprowadzenie do DirectX ................................................................. 37 Czym jest DirectX? ...................................................g...................................................g.....38 Dlaczego DirectX?...................................................g...................................................g38 Usługi DirectX ...................................................g...................................................g......39 Grafika 3D...................................................g...................................................g...................40 Układ współrzędnych dwuwymiarowych...................................................g................40 Układ współrzędnych trójwymiarowych ...................................................g.................41 6 Visual Basic i DirectX. Programowanie gier w Windows Świat zbudowany z trójkątów...................................................g..................................42 Kreślenie wielu trójkątów ...................................................g........................................43 Kolory ...................................................g...................................................g...................44 Oświetlenie i punkty widzenia...................................................g.................................44 Jestem sobie czajniczkiem ...................................................g.............................................45 Instalacja DirectX ...................................................g...................................................g.46 Uruchamianie programu ...................................................g..........................................47 Inicjalizacja obiektów DirectX ...................................................g................................48 Inicjalizacja Direct3D ...................................................g..............................................51 Ustawianie świateł ...................................................g...................................................g54 Tworzenie obiektu 3D...................................................g..............................................56 Wyświetlanie grafiki...................................................g................................................56 Renderowanie pojedynczego kadru ...................................................g.........................57 Podsumowanie ...................................................g...................................................g............59 Rozdział 3. Tworzenie grafiki 3D ......................................................................... 61 Wprowadzenie do programu trueSpace ...................................................g.........................61 Wprowadzenie do programów Photoshop i Illustrator ...................................................g..62 Tworzenie grafiki 3D ...................................................g...................................................g..63 Podstawowe pojęcia...................................................g.................................................63 Korzystanie z trueSpace...................................................g...........................................64 Narzędzia trueSpace...................................................g.................................................65 Tworzenie centrum handlowego ...................................................g....................................66 Projektowanie wnętrza...................................................g.............................................66 Konstruowanie pustego wnętrza ...................................................g..............................67 Podsumowanie ...................................................g...................................................g............80 Rozdział 4. Grafika dwuwymiarowa w świecie 3D ............................................... 81 Tworzenie grafiki dwuwymiarowej ...................................................g...............................81 Przetwarzanie obrazu w Photoshopie...................................................g.............................82 Wprowadzenie do Photoshopa...................................................g.................................82 Edycja obrazów...................................................g...................................................g.....84 Korzystanie z warstw...................................................g...............................................86 Wycinanie fragmentów obrazu ...................................................g................................88 Filtry i pozostałe funkcje ...................................................g.........................................89 Tworzenie sklepu ...................................................g...................................................g........90 Tworzenie prostej tekstury w Photoshopie ...................................................g..............91 Tworzenie złożonej tekstury w Photoshopie ...................................................g...........93 Tworzenie pustego sklepu w trueSpace...................................................g...................95 Podsumowanie ...................................................g...................................................g............98 Rozdział 5. Wczytywanie danych gry ................................................................... 99 Szczegóły projektowe ...................................................g...................................................g.99 Dane na dysku...................................................g...................................................g.......99 Format pliku inicjalizacyjnego ...................................................g..............................101 Dane w pamięci...................................................g...................................................g...103 Wczytywanie zapisanej gry...................................................g..........................................103 Klasa Game...................................................g...................................................g.........103 Korzystanie z klasy Game ...................................................g.....................................104 Zmienne na poziomie modułu w klasie Game...................................................g.......105 Metoda LoadGame...................................................g.................................................106 Czerpanie danych z pliku z zapisaną grą ...................................................g...............107 Odczyt danych za pomocą klasy SwimFile ...................................................g...........110 Wczytywanie informacji o centrum handlowym i sklepach.....................................112 Tworzenie sklepów i pozostałych elementów centrum handlowego........................113 Spis treści 7 Właściwości supermarketu ...................................................g....................................117 Zarządzanie kolekcjami obiektów Anchors...................................................g...........117 Podsumowanie ...................................................g...................................................g..........119 Rozdział 6. Wyświetlanie grafiki 3D .................................................................. 121 Inicjalizacja grafiki...................................................g...................................................g....121 Ładowanie centrum handlowego ...................................................g.................................122 Inicjalizacja DirectX ...................................................g..............................................123 Ładowanie obiektu 3D do pamięci ...................................................g........................125 Wyświetlanie informacji graficznych ...................................................g..........................127 Renderowanie centrum handlowego ...................................................g............................128 Główna pętla programu...................................................g..........................................128 Renderowanie grafiki Direct3D...................................................g.............................129 Wyświetlanie tekstu na ekranie ...................................................g.............................134 Wybieranie obiektów za pomocą klasy DXGraphics ...................................................g..136 Wykrywanie kliknięcia ...................................................g..........................................136 Szukanie wybranego obiektu 3D ...................................................g...........................137 Sprawdzanie pojedynczego obiektu...................................................g.......................137 Uruchamianie programu...................................................g...............................................139 Podsumowanie ...................................................g...................................................g..........140 Część II Symulowanie rzeczywistości .........................................141 Rozdział 7. Liczby losowe nie są losowe............................................................ 143 Definicja liczby losowej...................................................g...............................................143 Liczby losowe w komputerach...................................................g.....................................144 Generowanie liczb losowych ...................................................g.......................................145 Liczby losowe a Visual Basic ...................................................g......................................147 Randomize i Rnd...................................................g...................................................g.147 Generowanie liczb losowych za pomocą Rnd ...................................................g.......147 Rzut kośćmi ...................................................g...................................................g........149 Zakresy liczb losowych...................................................g................................................151 Skalowanie wartości losowych ciągłych ...................................................g...............152 Generowanie wartości losowych skokowych ...................................................g........153 Rozkład wartości losowych...................................................g..........................................153 Rozkład równomierny...................................................g............................................153 Rozkład nierównomierny...................................................g.......................................154 Generowanie skokowych wartości losowych o rozkładzie nierównomiernym........154 Generowanie ciągłych wartości losowych o rozkładzie nierównomiernym.............156 Generowanie nierównomiernie rozłożonych liczb losowych ...................................157 Podsumowanie ...................................................g...................................................g..........159 Rozdział 8. Symulowanie rzeczywistości............................................................ 161 Komputerowe symulacje...................................................g..............................................161 Symulacje i modele...................................................g................................................162 Typy symulacji...................................................g...................................................g....162 Elementy modelu symulacyjnego ...................................................g................................163 Klienci, serwery, kolejki ...................................................g........................................163 Czas oczekiwania i obsługi...................................................g....................................164 Częstotliwość odwiedzin ...................................................g.......................................164 Systemy wielu serwerów i kolejek ...................................................g........................165 Złożone symulacje ...................................................g.................................................165 Inne warianty kolejek...................................................g.............................................166 8 Visual Basic i DirectX. Programowanie gier w Windows Zegar symulacji ...................................................g...................................................g.........167 Zegar postępujący ...................................................g..................................................167 Zegar wyzwalany zdarzeniami ...................................................g..............................168 Statystyki symulacji ...................................................g...................................................g..169 Programowanie symulacji ...................................................g............................................169 Generatory liczb losowych ...................................................g....................................170 Kolejki...................................................g...................................................g.................170 Klienci jako obiekty person ...................................................g...................................172 Restauracja Kelp-Fil-A jako obiekt store ...................................................g..............172 Uruchamianie symulacji ...................................................g........................................173 Inicjalizacja symulacji ...................................................g...........................................173 Sekunda w symulacji ...................................................g.............................................175 Tworzenie klienta...................................................g...................................................g176 Odświeżanie głównego zegara...................................................g...............................177 Wyświetlanie statystyk ...................................................g..........................................177 Uruchomienie symulacji taktowanej zegarem ...................................................g.......178 Podsumowanie ...................................................g...................................................g..........179 Rozdział 9. Symulacja centrum handlowego ...................................................... 181 Istota symulacji ...................................................g...................................................g.........181 Budowanie szkieletu symulacji...................................................g....................................182 Uruchamianie symulacji ...................................................g........................................182 Kroki symulacji...................................................g...................................................g...183 Kroki w centrum handlowym ...................................................g................................185 Sterowanie prędkością symulacji...................................................g...........................187 Osiedla i konkurencja...................................................g...................................................g188 Budowanie osiedla ...................................................g.................................................188 Tworzenie konkurencji ...................................................g..........................................190 Inicjalizacja symulacji...................................................g..................................................191 Kluczowe wskaźniki centrum handlowego ...................................................g...........191 Wczytywanie godzin otwarcia...................................................g...............................192 Monitorowanie centrum handlowego...................................................g...........................193 Podsumowanie ...................................................g...................................................g..........198 Rozdział 10. Symulacja klientów......................................................................... 201 Klasa Customer ...................................................g...................................................g.........201 Potrzeby klienta ...................................................g...................................................g..202 Potrzeby gastronomiczne ...................................................g.......................................204 Zliczanie potrzeb...................................................g...................................................g.204 Kiedy pojawią się klienci? ...................................................g.....................................205 Tworzenie klientów ...................................................g...............................................207 Wybór najlepszego centrum...................................................g.........................................209 Kolejki priorytetowe ...................................................g...................................................g.211 Przebudowa kolejki...................................................g................................................212 Dodawanie elementów do kolejki...................................................g..........................212 Symulowanie klienta w centrum ...................................................g..................................214 Projektowanie automatu skończonego...................................................g...................214 Implementacja automatu skończonego ...................................................g..................215 Podsumowanie ...................................................g...................................................g..........217 Rozdział 11. Symulacja sklepów i pieniędzy ........................................................ 219 Sklepy a potrzeby ...................................................g...................................................g......219 Przechowywanie informacji o sklepie...................................................g..........................220 Spis treści 9 Klienci i sklepy...................................g...................................................g..........................221 Szukanie sklepu ...................................................g...................................................g..221 Wejście do sklepu ...................................................g..................................................223 Obliczanie momentu wyjścia ze sklepu...................................................g.................223 Wyjście ze sklepu ...................................................g..................................................224 Utrzymanie sklepu...................................................g...................................................g.....225 Koniec dnia ...................................................g...................................................g.........225 Koniec miesiąca ...................................................g...................................................g..226 Wyświetlanie informacji o sklepie...................................................g...............................226 Zarządzanie budżetem centrum handlowego ...................................................g...............229 Pobieranie czynszu...................................................g.................................................229 Koniec miesiąca w centrum handlowym ...................................................g...............230 Koniec roku w sklepie ...................................................g...........................................232 Koniec roku w centrum handlowym...................................................g......................233 Podsumowanie ...................................................g...................................................g..........234 Część III Od symulacji do gry ...................................................n...235 Rozdział 12. Sterowanie grą poprzez DirectInput ................................................ 237 Czym jest DirectInput?...................................................g.................................................237 Korzystanie z DirectInput ...................................................g............................................238 Integrowanie DirectInput z grą ...................................................g....................................238 Inicjalizacja DirectInput...................................................g...............................................239 Inicjalizacja DirectInput...................................................g.........................................240 Obsługa zdarzeń DirectInput...................................................g........................................243 Odczytywanie klawiatury ...................................................g......................................244 Konwersja kodów klawiatury na ASCII ...................................................g................246 Obsługa myszy...................................................g...................................................g....247 Przywracanie myszy...................................................g...................................................g..252 Zamykanie DirectInput ...................................................g................................................253 Podsumowanie ...................................................g...................................................g..........253 Rozdział 13. Wydawanie poleceń w grze ............................................................. 255 Uruchamianie gry...................................................g...................................................g......255 Poruszanie się po centrum ...................................................g.....................................256 Sterowanie szybkością gry...................................................g.....................................256 Wybieranie sklepów...................................................g...............................................257 Polecenia menu ...................................................g...................................................g...257 Polecenia w grze...................................................g...................................................g........257 Stany gry ...................................................g...................................................g................ ...258 Nowe funkcje graficzne ...................................................g...............................................259 Tworzenie poleceń ...................................................g...................................................g....261 Konwersja informacji z klawiatury na polecenia...................................................g.........262 Konwersja informacji z myszy na polecenia...................................................g................266 Wykonywanie poleceń ...................................................g.................................................268 Modyfikacja głównej pętli ...................................................g.....................................268 Wykonywanie poleceń...................................................g...........................................269 Wykonywanie poleceń w stanie OkayState...................................................g...........270 Wykonywanie poleceń w stanie NormalState ...................................................g.......270 Wyświetlanie informacji graficznych ...................................................g..........................272 Kreślenie kursora ...................................................g...................................................g272 Kreślenie okienka dialogowego...................................................g.............................275 Podsumowanie ...................................................g...................................................g..........278 10 Visual Basic i DirectX. Programowanie gier w Windcows Rozdział 14. Dźwięki i muzyka ............................................................................ 279 Dźwięki w centrum handlowym ...................................................g..................................279 Wprowadzenie do DirectX Audio...................................................g................................280 Udźwiękowienie gry ...................................................g...................................................g.280 Inicjalizacja DXAudio...................................................g..................................................281 Odtwarzanie muzyki w tle...................................................g............................................283 Ładowanie plików z muzyką do odtwarzania w tle..................................................283 Odtwarzanie muzyki w tle ...................................................g.....................................284 Zatrzymywanie odtwarzania ...................................................g........................................286 Wstrzymywanie odtwarzania w tle...................................................g........................286 Przywracanie odtwarzania ...................................................g.....................................287 Ustawianie głośności muzyki w tle...................................................g........................287 Pierwszoplanowe efekty dźwiękowe ...................................................g...........................288 Sprawdzanie statusu odtwarzania...................................................g.................................289 Tworzenie efektów dźwiękowych...................................................g................................290 Formaty plików dźwiękowych...................................................g...............................290 Poszukiwanie dźwięków...................................................g........................................291 Wprowadzenie do programu Cool Edit ...................................................g.................291 Digitalizacja dźwięku...................................................g.............................................292 Nagrywanie dźwięku ...................................................g.............................................294 Edycja pliku dźwiękowego ...................................................g....................................294 Zarządzanie plikami dźwiękowymi ...................................................g.......................296 Obróbka dźwięku ...................................................g...................................................g297 Podsumowanie ...................................................g...................................................g..........299 Rozdział 15. Mapa centrum i klienci ................................................................... 301 Odwzorowywanie centrum ...................................................g..........................................301 Tworzenie mapy...................................................g...................................................g........302 Definiowanie mapy...................................................g................................................302 Ładowanie danych mapy ...................................................g.......................................304 Inicjalizacja mapy ...................................................g..................................................306 Zaznaczanie obszarów ...................................................g...........................................307 Diagnostyka mapy ...................................................g.................................................309 Tworzenie klientów...................................................g...................................................g...310 Kreślenie szkieletu i łuski ...................................................g......................................310 Rybie oczy i kolory...................................................g................................................313 Zapisywanie ryby...................................................g...................................................g315 Podsumowanie ...................................................g...................................................g..........315 Rozdział 16. Spacer po centrum handlowym........................................................ 317 Wyświetlanie klientów...................................................g.................................................317 Ładowanie siatek klientów ...................................................g....................................318 Zmiany w klasie Customer ...................................................g....................................318 Zmiany w klasie Queue ...................................................g.........................................319 Wyświetlanie klientów...................................................g...........................................320 Spacer po centrum handlowym ...................................................g....................................321 Zarządzanie polami...................................................g................................................321 Znajdowanie wejścia...................................................g..............................................322 Znajdowanie wolnego pola ...................................................g....................................323 Znajdowanie wolnego pola w sąsiedztwie...................................................g.............323 Sterowanie ruchem klientów...................................................g..................................325 Chodzenie po centrum ...................................................g...........................................328 Droga do sklepu ...................................................g...................................................g..329 Poruszanie się po sklepie ...................................................g.......................................330 Spis treści 11 Opuszczanie centrum handlowego ...................................................g........................331 Obracanie klienta ...................................................g...................................................g332 Podsumowanie ...................................................g...................................................g..........332 Część IV Dopracowanie szczegółów gry.......................................335 Rozdział 17. Gazeta „Wiadomości Podwodne”..................................................... 337 Czytanie „Wiadomości Podwodnych” ...................................................g.........................337 Zapisywanie artykułów...................................................g..........................................338 Redagowanie artykułów...................................................g.........................................339 Pobieranie wiadomości ...................................................g..........................................340 Drukowanie gazety ...................................................g................................................341 Wyświetlanie gazety ...................................................g..............................................342 Przeglądanie gazety ...................................................g...............................................343 Pożyczanie pieniędzy z banku...................................................g......................................344 Pożyczanie pieniędzy...................................................g.............................................344 Wprowadzanie ciągów tekstowych z klawiatury...................................................g...344 Wyświetlanie okna dialogowego ...................................................g...........................346 Sterowanie oknem dialogowym...................................................g.............................348 Raymond przemawia ludzkim głosem ...................................................g.........................349 Synteza mowy...................................................g...................................................g.....349 Wybór głosu...................................................g...................................................g........350 Raymond mówi...................................................g...................................................g...350 Śledzenie wypowiedzi Raymonda ...................................................g.........................351 Wyświetlanie Raymonda ...................................................g.......................................352 Podsumowanie ...................................................g...................................................g..........354 Rozdział 18. Uruchamianie centrum handlowego ................................................ 355 Tworzenie struktury poleceń...................................................g........................................355 Projektowanie automatu skończonego...................................................g...................356 Dodawanie definicji ...................................................g...............................................357 Odczyt informacji z wejść ...................................................g.....................................359 Wykonywanie poleceń...................................................g...........................................360 Zarządzanie sklepami...................................................g...................................................g361 Generowanie listy sklepów ...................................................g....................................361 Wyświetlanie informacji o sklepie...................................................g.........................363 Wyświetlanie listy zaspokajanych potrzeb ...................................................g............365 Rozwiązywanie umowy dzierżawy...................................................g..............................369 Obsługa polecenia rozwiązania umowy...................................................g.................369 Likwidacja sklepu ...................................................g..................................................370 Podsumowanie ...................................................g...................................................g..........372 Rozdział 19. Koniec jest dopiero początkiem....................................................... 373 Zapisywanie gry ...................................................g...................................................g........373 Wprowadzanie nazwy pliku...................................................g...................................373 Zapisywanie gry w formacie SwimFile ...................................................g.................374 Zapis informacji o grze ...................................................g..........................................375 Zmiany w klasie SwimFile ...................................................g....................................376 Ładowanie zapisanej gry...................................................g..............................................377 Uruchamianie gry...................................................g...................................................g377 Wybieranie zapisanej gry...................................................g.......................................378 Oszukiwanie w „Podwodnych zakupach”...................................................g....................381 Wykrywanie polecenia CheatInputCommand ...................................................g.......382 Przetwarzanie kodów ...................................................g.............................................383 12 Visual Basic i DirectX. Programowanie gier w Windows Ukrywanie niespodzianek ...................................................g............................................385 Szukanie niespodzianek ...................................................g.........................................385 Wyświetlanie niespodzianek...................................................g..................................387 Podsumowanie ...................................................g...................................................g..........388 Skorowidz....................................................................................... 391 Rozdział 6. Wyświetlanie grafiki 3D W rozdziale:  Inicjalizacja grafiki     Wczytywanie informacji graficznych Wyświetlanie informacji graficznych Renderowanie centrum handlowego Wybieranie obiektów za pomocą klasy DXGraphics  Uruchamianie programu  Podsumowanie Po stworzeniu trójwymiarowej grafiki centrum handlowego i paru sklepów oraz zała- dowaniu kilku plików inicjalizacyjnych pora wrócić do DirectX i wyświetlić ją na ekranie. Inicjalizacja grafiki Po załadowaniu danych centrum handlowego czas załadować do pamięci grafikę, używając informacji inicjalizacyjnych, wczytanych do obiektów omawianych w po- przednim rozdziale. Obiekty te zawierają nazwy plików obiektów 3D, które mają zo- stać wyświetlone, wraz z ich względnym położeniem w śweiecie gry. Chcąc odizolować grafikę od reszty gry używam oddzielnego zestawu obiektów do przechowywania rzeczywistych obiektów, wyświetlanych na ekranie. Używając klasy Z)TCRJKEU z rozdziału 2. — „Wprowadzenie do DirectX” — zdefiniowałem sześć nowych klas, które będą przechowywać dane graficzne (ezobacz rysunek 6.1). 122 Część I ♦ Zanurzenie się w grę Rysunek 6.1. Informacje graficzne, przechowywane w kolekcji klas Visual Basica Centrum handlowe składa się z zestawu obiektów graficznych, z których każdy został oddzielnie stworzony za pomocą narzędzia do modelowania trójwymiarowego, np. trueSpace. Obiekty te to samo centrum handlowe, sklepy, restauracje i wszystkie inne obiekty, wyświetlane w ramach centrum. Każdy z obiektów jest przechowywany w klasie :1DLGEV. Z1DLGEV zawiera informacje niezbędne do wyświetlenia obiektu graficznego na ekra- nie, w tym informacje z pliku DirectX typu .X, zwane również siatką, oraz tekstury, którymi zostaną pokryte siatki. W celu zminimalizowania ilości wykorzystywanych zasobów, siatki i tekstury są ładowane tylko raz i przechowywane we własnych kla- sach. Umożliwia to stworzenie pojedynczego obiektu, który będzie potem używany wielokrotnie bez konieczności każdorazowego ładowaniea. Siatki są przechowywane w klasie :/GUJ wraz z materiałami i nazwami plików zwią- zanych z teksturami, wyświetlanymi na siatkach. Kolekcja :/GUJGU jest zbudowana podobnie, jak kolekcje omawiane wcześniej w rozdziale 5. (#PEJQTU(QQFU/CNN1D LGEVU i 5VQTGU) i służy wyłącznie do zarządzania zestawem siatek. Tekstury, podobnie jak siatki, są przechowywane we własnym obiekcie :6GZVWTG, a kolekcje tekstur zawierają się w obiekcie :6GZVWTGU. Aby przywołać daną teksturę, potrzebna jest tylko nazwa jej pliku. Wymusza to pewne ograniczenie w sposobie projektowania grafiki. Jako że nazwa pliku musi być niepowtarzalna w obrębie ko- lekcji, nie można stworzyć dwóch tekstur o tych samych nazwach i przechowywać ich w odrębnych katalogach, chyba że zawierają ten saem obraz. Przykładowo, nie można korzystać z tekstury o nazwie $NWG5VTKRGU$/2, która zawie- ra wzór z pionowymi paskami i jest przechowywana w katalogu Stores wraz z inną teksturą o nazwie $NWG5VTKRGU$/2, zawierającej wzór z ukośnymi paskami i prze- chowywanej w katalogu Anchors. Zostanie wtedy użyta tekstura z pierwszego z zała- dowanych plików, a drugi z nich zostanie uznany za eduplikat pierwszego. Ładowanie centrum handlowego Wyświetlanie grafiki przez DirectX można podzielić na dwie fazy. Najpierw grafika musi zostać załadowana do pamięci, a potem wyświetlona na ekranie. Ładowanie gra- fiki to dość skomplikowany proces, jednak po sprowadzeniu go do postaci zawierają- cej tylko kluczowe elementy nie wygląda już tak streasznie. Rozdział 6. ♦ Wyświetlanie grafiki 3D 123 Inicjalizacja DirectX W metodzie +PKV)COG podsystem graficzny został zainicjalizowany poprzez wywoła- nie +PKV)TCRJKEU (zobacz wydruk 6.1). +PKV)TCRJKEU odpowiada za dwie rzeczy: po pierwsze musi stworzyć nową instancję klasy :)TCRJKEU i wywołać metodę +PKV : aby zainicjalizować urządzenie Direct3D; po drugie, musi załadować pliki .X na pod- stawie załadowanej informacji inicjalizacyjnej. Wydruk 6.1. Metoda Form1.InitGraphics (WPEVKQP+PKV)TCRJKEU #U.QPI KO4GUWNV#U.QPI KOC#U#PEJQT KOH#U(QQF KOO#U/CNN1DLGEV KOU#U5VQTG 5GVFZ0GY :)TCRJKEU 5GVFZ GDWI1DLGEV)COG GDWIIGT FZ9KPFQYGF6TWG FZJ9PF2KEVWTGJ9PF FZ5JQY(TCOG4CVG6TWG FZ*GKIJV2KEVWTG*GKIJV5ETGGP6YKRU2GT2KZGN; FZ9KFVJ2KEVWTG9KFVJ5ETGGP6YKRU2GT2KZGN: FZ GHCWNV COGTC2QKPV)COG1DL COGTC2QKPV FZ GHCWNV8KGY2QKPV)COG1DL8KGY2QKPV FZ GHCWNV4QVCVKQP)COG1DL4QVCVKQP 4GUWNVFZ+PKV : KH4GUWNV 6JGP )COG GDWIIGT9TKVG.QPI+PKELCNKCELCWTæFGPKC KTG)EV PKGRQYKQFđCUKú å4GUWNV 7PNQCF/G PF+H 9KVJ)COG1DL/CNN FZ.QCF/GUJ(TQO KUM#RR2CVJ /CNNU :(KNGPCOGA .QECVKQP4QVCVKQP :1DLGEV/CNN PF9KVJ (QT CEJC+P)COG1DL/CNN#PEJQTU FZ.QCF/GUJ(TQO KUM#RR2CVJ #PEJQTUC :(KNGPCOGC.QECVKQPA C4QVCVKQPFZQDLGEVCPEJQT 0GZVC (QT CEJH+P)COG1DL/CNN(QQFU FZ.QCF/GUJ(TQO KUM#RR2CVJ (QQFUH :(KNGPCOGH.QECVKQPA H4QVCVKQPFZQDLGEVHQQF 0GZVH 124 Część I ♦ Zanurzenie się w grę (QT CEJO+P)COG1DL/CNN/CNN1DLGEVU FZ.QCF/GUJ(TQO KUM#RR2CVJ 1DLGEVUO :(KNGPCOGO.QECVKQPA O4QVCVKQPFZQDLGEVHQQF 0GZVO (QT CEJU+P)COG1DL/CNN5VQTGU FZ.QCF/GUJ(TQO KUM#RR2CVJ 5VQTGUU :(KNGPCOGU.QECVKQPA U4QVCVKQPFZQDLGEVUVQTG 0GZVU PF(WPEVKQP Procedura +PKV)TCRJKEU na początku tworzy nowy obiekt :)TCRJKEU, ustawia różne właściwości i wywołuje metodę +PKV : z klasy :)TCRJKEU. W odróżnieniu od wersji tej procedury z rozdziału 2. zawiera ona właściwość 9KPFQYGF, która decyduje o tym, czy program jest wyświetlany w okienku (6TWG) czy na pełnym ekranie ((CNUG). Okienko czy pełny ekran Mimo, że DXGraphics obsługuje tryb pełnoekranowy, nie polecam korzystania z niego, ponieważ jedyne elementy sterujące interfejsu użytkownika pozostają wtedy poza obszarem wyświetlania DirectX, co uniemożliwiaX sterowanie programem. Teraz już można przyporządkować wartości dla 8KGY2QKPV, COGTC2QKPV i 4QVCVKQP zzaładowanego pliku z zapisaną grą. Można również określić szerokość i wysokość ekranu w pikselach za pomocą odpowiednio: 9KFVJ i *GKIJV. Jest to istotne dla okre- ślenia perspektywy, wyświetlanej w oknie o zmiennym rozmiarze, jak i do ustalenia rozmiaru ekranu gry w trybie pełnoekranowym. Zakładając, że DirectX zostało poprawnie zainicjalizowane wywołaniem +PKV :, można załadować poszczególne pliki .X. Wykonuje to pętla (QT CEJ, która dla każdego po- jedynczego obiektu 3D centrum handlowego wykonuje metodę .QCF/GUJ(TQO KUM, aby załadować go do pamięci. Kiedy obiekt zostanie załadowany do pamięci, do jego wyświetlenia na ekranie po- trzebne są, poza nazwą pliku, trzy dodatkowe informacje: lokalizacja obiektu w cen- trum handlowym, czyli właściwości : i obiektu, informacja o tym, jak obracać obiekt, aby prawidłowo umieścić go w centrum handlowyem i typ obiektu. Skąd się wzięło Z? Przy tworzeniu obiektów w programie trueSpace, a następnie ich wyświetlaniu po- przez DirectX, można zauważyć, że osie Y i X zostają zamienione. W trueSpace oś Z wskazuje górę, podczas gdy w DirectX górę wskazuje oś Y. Wymaga to od pro- gramisty zamiany wartości Y i Z podczas konwersji współrzędnych z trueSpace do DirectX. Rozdział 6. ♦ Wyświetlanie grafiki 3D 125 Ładowanie obiektu 3D do pamięci Metoda .QCF/GUJ(TQO KUM (patrz wydruk 6.2) ładuje do pamięci obiekty 3D, stworzo- ne w programie trueSpace, aby umożliwić ich późniejsze wyświetlenie. Wymaga ona kilku parametrów, takich jak nazwa siatki, miejsce w przestrzeni trójwymiarowej, gdzie siatka ma zostać wyświetlona, sposób obracania siatką, umożliwiający jej pra- widłowe umieszczenie w centrum handlowym i typ wyświetlanego obiektu. Wszystkie te informacje zostaną zapisane w :1DLGEV i dodane do kolekcji :1DLGEVU, będącej elementem obiektu :)TCRJKEU. Wydruk 6.2. Metoda LoadMeshFromDisk 2WDNKE(WPEVKQP.QCF/GUJ(TQO KUM /GUJ2CVJ#U5VTKPI/GUJ(KNG#U5VTKPIA .QECVKQP#U  8 6144QVCVKQP#U5KPING6[R#U :1DLGEV6[RGU #U.QPI KOOVTNDWHHGT#U  :$WHHGT KOK#U.QPI KOHPCOG#U5VTKPI KOQ#U :1DLGEV KOO#U :/GUJ KOV#U :6GZVWTG KOP/CVGTKCNU#U.QPI KO/GUJ/CV#U  /#6 4+#. 1P TTQT4GUWOG0GZV +H.GP /GUJ(KNG 6JGP .QCF/GUJ(TQO KUM  ZKV(WPEVKQP PF+H HPCOG/GUJ2CVJ /GUJ(KNG : GDWIIGT9TKVGNKPGĐCFQYCPKGUKCVMKHPCOG 5GVQ0GY :1DLGEV Q0COG/GUJ(KNG QO6[RG6GZVWTGF/GUJ QQ6[RG6[R Q.QECVKQP.QECVKQP Q4QVCVKQP4QVCVKQP Q/GUJ(KNGPCOG/GUJ(KNG +H :OUJU /GUJ(KNG +U0QVJKPI6JGP 5GVO0GY :/GUJ 5GVO/GUJFFZ.QCF/GUJ(TQO: HPCOG  :/ 5*A/#0#) FF GXKEGA 0QVJKPIOVTNDWHHGTP/CVGTKCNU +HO/GUJ+U0QVJKPI6JGP  : GDWIIGT9TKVG : TT0KGOQľPCCđCFQYCèUKCVMK T)T .QCF/GUJ(TQO KUM TT0WODGT  ZKV(WPEVKQP PF+H O0COG/GUJ(KNG O/CVGTKCNUP/CVGTKCNU 126 Część I ♦ Zanurzenie się w grę (QTKVQP/CVGTKCNUŌ FFZ$WHHGT)GV/CVGTKCNOVTNDWHHGTK/GUJ/CV /GUJ/CV#ODKGPV/GUJ/CVFKHHWUG O/GUJ/CVGTKCNU K /GUJ/CV HPCOGFFZ$WHHGT)GV6GZVWTG0COG OVTNDWHHGTK O/GUJ6GZVWTGU K HPCOG +H.GP HPCOG  6JGP +H ZVGZU HPCOG +U0QVJKPI6JGP 5GVV0GY :6GZVWTG 5GVV6GZVWTGFFZ TGCVG6GZVWTG(TQO(KNG FF GXKEG/GUJ2CVJA  HPCOG V0COGHPCOG  :VGZU#FFV  PF+H PF+H 0GZVK  :OUJU#FFO PF+H :QDU#FFQ .QCF/GUJ(TQO KUM PF(WPEVKQP Na początku metoda sprawdza, czy nazwa pliku nie jest pusta. Jeżeli jest, opuszcza funkcję, niczego nie ładując. Następnie wysyła echo z nazwą ładowanego pliku do Debug.LOG. Potem konstruuje kompletną nazwę pliku, łącząc z sobą parametry /GUJ2CVJ i /GUJ(KNG oraz tworzy nowy egzemplarz obiektu :1DLGEV do przechowy- wania nowej siatki. Następnie ustawia właściwości stworzonej kopii obiektu :1D LGEV, przyporządkowując im wartości związane z ładowanyme obiektem 3D. W dalszej kolejności metoda przesyła nazwę pliku siatki do obiektu :OUJU, abyzo- rientować się, czy należy załadować plik siatki z dysku. Jako że domyślną metodą dla tej klasy jest+VGO, nie trzeba jej wymieniać po nazwie klasy, aby zostaeła użyta. W ten sposób, kiedy :OUJU /GUJ(KNG zwraca0QVJKPI, wiadomo, że trzeba załadować siat- kę. Jeżeli siatka jest już załadowana, funkcja dodaje nowy obiekt :1DLGEV do kolek- cji :1DLGEVU i wraca do programu wywołującego. Aby załadować siatkę, należy stworzyć nową instancję obiektu :/GUJ, a następnie użyć .QCF/GUJ(TQO: w celu załadowania pliku .X do pamięci. Metoda ta wymaga paru dodatkowych parametrów poza nazwą pliku do załadowania.  :/ 5*A/#0#) ozna- cza, że dane zostaną załadowane do obszaru pamięci zarządzanego przez Direct3D, co poprawi ogólną wydajność. Parametry OVTNDWHHGT i P/CVGTKCNU zawierają informa- cje o sposobie wyświetlenia powierzchni czołowej kaeżdej siatki. Rozdział 6. ♦ Wyświetlanie grafiki 3D 127 Nie powiodło się! Najczęstszym błędem podczas ładowania plików .X jest próba załadowania nieist- niejącego pliku. Jeżeli obiekty 3D nie wyświetlają się na ekranie, należy sprawdzić zawartość pliku Debug.LOG. Podczas ładowania siatki nazwa jej pliku zostaje do- dana do pliku dziennika. Jeżeli wystąpił problem, informacja o błędzie będzie za- pisana tuż po nazwie pliku, do którego się odnosi. Po załadowaniu siatki trzeba wydobyć parę informacji z bufora tekstur. Konkretnie chodzi o nazwę pliku tekstury, którą uzyskujemy, wykorzystując metodę $WHHGT)GV 6GZVWTG0COG i informację o oświetleniu, otrzymywaną za pomocą metody $WHHGT)GV /CVGTKCN. OVTNDWHHGT zawiera tablicę wartości, dlatego należy użyć indeksu, aby od- wołać się do potrzebnej wartości. Po uzyskaniu informacji o oświetleniu trzeba ustawić atrybut #ODKGPV na taką samą wartość, jak FKHHWUG. Pomaga to w prawidłowym wyświetlaniu kolorów. Wtedy moż- na zapisać tę informację do właściwości /GUJ/CVGTKCNU obiektu :/GUJ. W ramach tej samej pętli można również otrzymać nazwę pliku, związaną z daną tek- sturą. Nazwa posłuży do sprawdzenia w kolekcji tekstur ( ZVGZU), czy dana tekstura została już wcześniej załadowana. Jeżeli nie, tworzy się nową instancję obiektu :6GZVWTG i za pomocą metody TGCVG6GZVWTG(TQO(KNG otrzymuje się teksturę. Na- stępnie można dodać teksturę do obiektu :6GZVWTGU i powtarzać całą operację, do- póki wszystkie informacje z bufora OVTNDWHHGT zostaną przetworzone. Na koniec funkcja dodaje :1DLGEV do kolekcji :1DLGEVU,ustawia wartość zwrotną na GTQ,co oznacza, że operacja się powiodła i opuszcza metodeę. Działa, ale zbyt wolno Mimo że opisana technika działa, wstępne przetworzenie wszystkich plików, zwią- zanych z centrum handlowym, zajmuje dużo czasu. Jest wiele technik, z których można skorzystać, aby przyspieszyć ten proces, jednak nigdy nie pozbędziemy się pewnego opóźnienia podczas ładowania grafiki. To dlatego większość gier pod- czas ładowania wyświetla atrakcyjne obrazy lub filmy. Pomaga to zająć czymś gra- cza, podczas gdy w tle ładują się niezbędne informacjXe. Wyświetlanie informacji graficznych Proces wyświetlania grafiki 3D jest stosunkowo prosty w teorii. Na początku należy zdefiniować otoczenie trzema macierzami — świata, widoku i rzutu. Potem trzeba wyczyścić ekran i dodać każdy ze zdefiniowanych obiektów do świata. W końcu na- leży wyświetlić grafikę. Mimo że proces ten wydaje się prosty, w praktyce może się niezwykle skomplikować. Macierz świata opisuje, gdzie znajduje się początek układu współrzędnych świata gry. Jest to zwykle najprostsza z trzech macierzy — przynajmniej w sensie inicjaliza- cji. Jednakże jej wartości będą się zmieniać podczas dodawania nowych obiektów do świata gry. 128 Część I ♦ Zanurzenie się w grę Macierz widoku opisuje lokalizację kamery, przez którą widziany jest świat. Kamera ta działa podobnie, jak oko (eye) w programie trueSpace, z tą różnicą, że oko jest nie- ruchome i widziany świat porusza się względem niego, podczas gdy współrzędne kamery oznaczają jej umiejscowienie w świecie gry, a widok (viewpoint) reprezentuje miejsce w przestrzeni, na które skierowana jest kameera. Macierz rzutu opisuje, jak współrzędne świata gry są przyporządkowane współrzęd- nym ekranu. Sposób przyporządkowania decyduje o tym, czy świat będzie widoczny jak w teleskopie czy jak w obiektywie szerokokątnym, albo czy obiekty będą widzia- ne jako wysokie i wąskie czy jako niskie i szerokie. Przypadki te to oczywiście warto- ści skrajne. Tylko ich właściwe ustawienie może uczyneić grę ciekawszą. Kolejnym problemem jest ustawienie oświetlenia. Praca w trueSpace wymagała od czasu do czasu poruszania czerwonymi gwiazdkami oznaczającymi punkty świetlne, aby lepiej widzieć tworzony właśnie obiekt. DirectX również umożliwia niezależne oświetlanie każdego obiektu, jak również stosowanie pełnego oświetlenia, które spo- woduje, że obiekty będą oświetlone tak samo z każdej strony. Co prawda dzięki temu staną się bardziej widoczne, ale pozbawienie ich strony ciemnej i jasnej osłabi efekt trójwymiarowości. Renderowanie centrum handlowego Po załadowaniu wszystkich informacji dotyczących centrum handlowego można przystąpić do jego wyświetlania. W tym celu należy pobrać informacje graficzne, za- ładowane wcześniej metodą .QCF/GUJ(TQO KUM i wyświetlić je na ekranie. Dodatkowo trzeba ustalić sposób przesuwania widoku na ekranie i kontrolować pozostałe aspekty wyświetlania świata 3D. Główna pętla programu Procedura 2NC[)COG (zobacz wydruk 6.3) to główna pętla programu. Wywołuje ona metodę 4GPFGT z klasy :)TCRJKEU, a następnie procedurę Q XGPVU, umożliwiającą systemowi Windows wykonywanie innych zadań. Bez tego odwołania gra będzie blo- kować inne aplikacje, co może doprowadzić do zawieszeneia się systemu. Wydruk 6.3. Procedura Form1.PlayGame 5WD2NC[)COG Q9JKNG)COG#EVKXG FZ4GPFGT  Q XGPVU .QQR PF5WD Rozdział 6. ♦ Wyświetlanie grafiki 3D 129 Renderowanie grafiki Direct3D Metoda 4GPFGT to kolejna z procedur, które na pierwszy rzut oka wyglądają groźnie (zobacz wydruk 6.4). Jednakże w praktyce nie jest zbyt skomplikowana. Na początku deklaruje kilka tymczasowych zmiennych i wyłącza kontrolę błędów. W ten sposób kontrola błędów przechodzi w gestię programisty. Wydruk 6.4. Metoda DXGraphics.Render 2WDNKE(WPEVKQP4GPFGT #U.QPI 1P TTQT4GUWOG0GZV KOOCV6GOR#U  /#64+: KOOCV6TCPU#U  /#64+: KOXGE6GOR#U  8 614 KOXR#U  8+ 92146 KOOO#U  /#6 4+#. KOQ#U :1DLGEV KOK#U.QPI  :/CVTKZ+FGPVKV[OCV9QTNF FF GXKEG5GV6TCPUHQTO  65A914. OCV9QTNF  :/CVTKZ+FGPVKV[OCV8KGY  :/CVTKZ4QVCVKQP;OCV8KGY4QVCVKQP  :/CVTKZ.QQM#V.*OCV6GOR COGTC2QKPV8KGYRQKPVXGE   :/CVTKZ/WNVKRN[OCV8KGYOCV8KGYOCV6GOR FF GXKEG5GV6TCPUHQTO  65A8+ 9OCV8KGY  :/CVTKZ2GTURGEVKXG(QX.*OCV2TQLRK*GKIJV9KFVJ F GXKEG5GV6TCPUHQTO  65A241, 6+10OCV2TQL  :8GE5WDUVTCEVXGE6GOR COGTC2QKPV8KGY2QKPV FF GXKEG)GV8KGYRQTVXR  :8GE7PRTQLGEVXGE.KIJVXGE6GORXROCV2TQLOCV8KGYOCV9QTNF  :8GE5ECNGXGE.KIJVXGE.KIJV FF.KIJV KTGEVKQPXGE.KIJV FF GXKEG5GV.KIJVFF.KIJV FF GXKEG.KIJV PCDNG FF GXKEG NGCT$[8CN  . #4A6#4) 61T  . #4A $7(( 4* FF GXKEG$GIKP5EGPG (QT CEJQ+P :QDU   :/CVTKZ+FGPVKV[OCV6GOR   :/CVTKZ4QVCVKQP;OCV6GORQ4QVCVKQP   :/CVTKZ6TCPUNCVKQPOCV6TCPUQ.QECVKQP:Q.QECVKQP;Q.QECVKQP   :/CVTKZ/WNVKRN[OCV6GOROCV6GOROCV6TCPU  F GXKEG5GV6TCPUHQTO  65A914. OCV6GOR +HQO6[RG5KORNG/GUJ6JGP  :OUJU Q0COG /GUJ TCY5WDUGV 130 Część I ♦ Zanurzenie się w grę  NUG+HQO6[RG6GZVWTGF/GUJ6JGP 9KVJ :OUJU Q/GUJ(KNGPCOG (QTK6Q/CVGTKCNUŌ FF GXKEG5GV/CVGTKCN/GUJ/CVGTKCNU K FF GXKEG5GV6GZVWTG :VGZU /GUJ6GZVWTGU K 6GZVWTG /GUJ TCY5WDUGVK 0GZVK  PF9KVJ  NUG+HQO6[RG5GNGEVGF/GUJ6JGP 9KVJ :OUJU Q/GUJ(KNGPCOG (QTK6Q/CVGTKCNUŌ OO#ODKGPVC OO#ODKGPVT OO#ODKGPVD OO#ODKGPVI OO KHHWUGOO#ODKGPV FF GXKEG5GV/CVGTKCNOO FF GXKEG5GV6GZVWTGA  :VGZU /GUJ6GZVWTGU K 6GZVWTG /GUJ TCY5WDUGVK 0GZVK  PF9KVJ  PF+H 0GZVQ +H5JQY(TCOG4CVG6JGP  TCY(TCOG4CVG  TCY8KGY2QKPV PF+H FF GXKEG PF5EGPG TT NGCT FF GXKEG2TGUGPV$[8CN$[8CN$[8CN +H TT0WODGT 6JGP 4GPFGT4GUGV : PF+H PF(WPEVKQP Definiowanie funkcji przekształceń Pierwszym krokiem podczas wyświetlania grafiki trójwymiarowej jest zainicjalizowa- nie macierzy świata. Metoda  :/CVTKZ+FGPVKV[ definiuje macierz jednostkową i, ko- rzystając z metody 5GV6TCPUHQTO, przyporządkowuje jej wartości macierzy świata. Jako że najlepiej zaczynać od początku, współrzędne zostały eustawione na punkt (0, 0, 0). Rozdział 6. ♦ Wyświetlanie grafiki 3D 131 Ustawianie widoku jest trochę bardziej złożone. Program zaczyna się od przyporząd- kowania widoku do macierzy jednostkowej, następnie używa wartości 4QVCVKQP, by określić, jak obrócić widok względem osi Y. Zamiast używać skomplikowanej mate- matyki do tego typu obliczeń, po prostu korzysta z procedury  :/CVTKZ4QVCVKQP;, która obraca macierzą widoku. Należy pamiętać, że kąty obrotu są wyrażone w radia- nach, a nie w stopniach. Stopnie czy radiany? Pełny okrąg ma 360 stopni albo 2pi radianów. Tak więc aby zamienić wartość kąta w stopniach na radiany, należy pomnożyć jego wartość przez pi/180. Z kolei aby zamienić kąt wyrażony w radianach na stopnie, należXy pomnożyć go przez 180/pi. Następnym krokiem jest utworzenie tymczasowej macierzy za pomocą procedury  :/CVTKZ.QQMCV.*, która korzysta z wartości COGTC2QKPV i 8KGY2QKPV wraz ze spe- cjalnym wektorem, opisującym, która z osi skierowana jest do góry. W tym przypad- ku wektor XGE    wskazuje na oś Y. Ostateczną macierz, opisującą bieżący widok, uzyskujemy mnożąc ze sobą powyższe macierze przy użyciu procedury   /CVTKZ/WNVKRN[. Macierz rzutu zostaje utworzona przy użyciu procedury  :/CVTKZ2GTURGEVKXG(QX.*. Tworzy ona macierz, zawierającą inf
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Visual Basic i DirectX. Programowanie gier w Windows
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ą: