INNE EBOOKI AUTORA
Autor:
Wydawca:
Format:
epub, mobi
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.
Rok wydania | 2014 |
---|---|
Liczba stron | 396 |
Kategoria | Grafika |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-18047-8 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
INNE EBOOKI AUTORA
POLECAMY
Ciekawe propozycje
Grafika dla smyka
do koszyka
Grafika inżynierska
do koszyka
Grafika komputerowa dla mechaników
do koszyka
Projektowanie inżynierskie i grafika...
do koszyka
Spis treści
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 |