ebook Grafika 3D czasu rzeczywistego - Jacek Matulewski

Grafika 3D czasu rzeczywistego

Przedmiotem książki jest OpenGL, czyli popularny interfejs programistyczny służący do tworzenia aplikacji z grafiką 3D. W ostatnich dwóch latach został on całkowicie zreformowany, w efekcie czego większość książek i materiałów na jego temat stała się nieaktualna. W publikacji przedstawione są nowe wersje OpenGL (od wersji 3.3 wzwyż) w sposób odpowiedni zarówno dla początkujących programistów grafiki 3D, w szczególności studentów informatyki, jak i tych, którzy ze starego OpenGL chcieliby „się przesiąść” na nowego. Książkę można traktować jak podręcznik akademicki, w którym na przykładzie OpenGL omówione są podstawowe pojęcia grafiki 3D. Poznasz: ● sposoby tworzenia aplikacji korzystających z grafiki trójwymiarowej tworzonej za pomocą OpenGL, w tym z nowych wersji tej biblioteki, ● metody programowania shakerów w GLSL, ● teoretyczne podstawy rachunku macierzy niezbędne w grafice trójwymiarowej, ● model oświetlenia Phonga i nauczysz się go implementować. Powinieneś znać: ● podstawy programowania w C++, w tym programowania obiektowego, ● podstawy programowania dla systemu Windows.Wstęp 9 Rozdział 1. Inicjowanie okna w tradycyjnym OpenGL 11 Kilka ustaleń 11 Profil zgodności i profil rdzenny 13 Tworzenie projektu i dostosowanie go do współpracy z OpenGL 14 Tworzenie okna za pomocą funkcji WinAPI. Klasa okna 16 Przystosowanie okna do współpracy z OpenGL za pomocą funkcji biblioteki WGL. Klasa OknoGL 25 Informacje o używanej wersji OpenGL i karcie graficznej 28 Przygotowanie i rysowanie sceny 29 Kolory 34 Zabawy kamerą 35 Tryb pełnoekranowy 39 Rozdział 2. Wektory i macierze kwadratowe 44 Wektory 44 Zapis za pomocą wersorów 45 Iloczyn skalarny 46 Iloczyn wektorowy 47 Przykład 48 Macierze kwadratowe 50 Czym są macierze? 50 Iloczyn macierzy oraz mnożenie wektora przez macierz 51 Przykład 52 Mnożenie macierzy nie jest przemienne 53 Macierz jednostkowa 53 Macierz odwrotna 54 Wyznacznik macierzy 54 Przykład 55 Sprytny zapis iloczynu wektorowego 57 Obliczanie macierzy odwrotnej 57 Przykład 58 Macierz transponowana 60 Operator gwiazdka 61 Macierz ortonormalna 61 Macierz przekształcenia układu współrzędnych 63 Iloczyn skalarny wektorów i macierze 64 Rzut wektora na kierunek wyznaczony przez inny wektor. Składowa wektora w kierunku wyznaczonym przez inny wektor 65 Macierze 4 × 4 66 Zadania 68 Rozdział 3. Macierze w OpenGL i współrzędne jednorodne 70 Przekształcenia układów współrzędnych w potoku renderowania OpenGL 71 Macierz rzutowania 74 Macierz model-widok oraz macierze świata i widoku 78 Współrzędne jednorodne 81 Rozdział 4. Tworzenie kontekstu renderowania. Profil zgodności. Rozszerzenia 84 Korzystanie z rozszerzeń ARB 84 Zawirowania z tworzeniem kontekstu 86 Użycie glext.h i wglext.h 88 Użycie biblioteki GLEW, zarządzającej rozszerzeniami 89 Użycie biblioteki DLL 90 Dołączenie kodu źródłowego GLEW do projektu aplikacji 91 Rozdział 5. Profil rdzenny. Bufory 94 Bufory werteksów 94 Tablica indeksów i bufor indeksów 101 Nawijanie i ukrywanie tylnych powierzchni 104 Konsolidacja buforów 106 Klasa werteksu 110 Przełączenie na profil rdzenny i liczenie strat 112 Rozdział 6. Shadery 115 Podstawy GLSL 116 Najprostsze shadery 117 Kompilacja shadera 119 Kolor i indeksy atrybutów werteksu 126 Trochę zabawy 128 Parametry shadera 131 Macierze świata, widoku i rzutowania 134 Kolumny i wiersze 137 Plan awaryjny 137 Zadania 138 Rozdział 7. Macierze używane w grafice 3D 139 Macierze rzutowania 139 Macierz rzutowania izometrycznego 141 Macierz rzutowania perspektywicznego 144 Różnice funkcji glFrustum i gluPerspective 148 Współrzędne viewportu 150 Przykład 150 Macierz świata 155 Translacja 156 Skalowanie i odbicia względem płaszczyzn układu współrzędnych 156 Obroty 157 Obrót wokół dowolnej osi 161 Macierze obrotu a kwaterniony jednostkowe 164 Złożenie obrotów i translacji – obrót wokół dowolnego punktu 164 Pochylenie 165 Rzut na płaszczyznę 166 Macierz widoku 169 Przykład złożenia macierzy widoku, świata i rzutowania 175 Zadania 178 Rozdział 8. Implementacja wektorów i macierzy 179 Wektory 179 Projekt interfejsu 179 Szablon TWektor 180 Specjalizacje szablonu dla wektora trój- i czteroelementowego 183 Testy 187 Macierze 188 Szablon TMacierzKwadratowa 189 Szablon TMacierzGrafika3D 196 Klasa MacierzOpenGL 207 Użycie obiektów macierzy w programie 208 Zadania 211 Rozdział 9. Sterowanie kamerą 213 Kontrola obrotów kamery za pomocą klawiszy 213 Tryby działania kamery 216 Kontrola orientacji kamery za pomocą myszy 221 Przesuwanie kamery myszą 226 Użycie rolki myszy 228 Swobodne obroty i ich powolne wygaszanie 228 Zadania 233 Rozdział 10. Aktorzy. Rysowanie brył. Animacja 235 Abstrakcja 235 Kwadrat 239 Zmiany w klasie okna 240 Pierwsza bryła 243 Optymalizacja rysowania wielu ciągów 248 Bufor głębi i pomijanie tylnych powierzchni 249 Kwadryki 251 Sfera 258 Aktor z buforem indeksów 261 Sfera z buforem indeksów 264 Końcowy zestaw brył: sfera, walec i sześcian 274 Animacja sceny 276 Zadania 280 Rozdział 11. Oświetlenie. Model Phonga 282 Model Phonga 282 Model Lamberta światła rozproszonego 284 Model rozbłysku Phonga 287 Uśrednianie normalnych 288 Definiowanie normalnych 289 Implementacja oświetlenia w shaderze werteksów 300 Aktualizacja położenia kamery 303 Ustawianie parametrów oświetlenia i materiału 304 Macierz normalnych 306 Osłabienie oświetlenia wraz z odległością 311 Obliczanie oświetlenia per pixel 313 Cel-shading 318 Zadania 319 Rozdział 12. Cienie rzucane 321 Implementacja metody rzutowania cieni 322 Materiał jako źródło informacji o kolorze aktorów 331 Rozdział 13. Odwzorowywanie tekstur 335 Współrzędne teksturowania 335 Filtrowanie tekstur i mipmapy 337 Zmiany w klasie werteksu i klasach aktorów 337 Wczytanie tekstur 346 Przygotowanie zestawu tekstur 355 Implementacja teksturowania w shaderze fragmentów 357 Tworzenie i usuwanie tekstur 361 Zawijanie tekstur 367 Tekstury w służbie realizmu 371 Zadanie 371 Rozdział 14. Użycie wielu tekstur 374 Dwie tekstury 375 Kombinacje tekstur 379 Globus i odwzorowywanie rozbłysku 380 Zadania 383 Dodatek. Biblioteki GLFW i GLM 384 Biblioteka GLM 384 Dodanie biblioteki GLM do projektu 384 Przykład użycia funkcji GLM 385 Biblioteka GLFW 388 Dodanie biblioteki GLFW do projektu 388 Inicjowanie okna z użyciem GLFW 389 Pętla główna 393 Obsługa zdarzeń 394 Indeks 396

Dodaj komentarz


Brak komentarzy

  Pobierz fragment (ePub)   lub czytaj