Grafika 3D czasu rzeczywistego - ebook
Grafika 3D czasu rzeczywistego - ebook
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.
Spis treści
Wstęp
Rozdział 1. Inicjowanie okna w tradycyjnym OpenGL
Kilka ustaleń
Profil zgodności i profil rdzenny
Tworzenie projektu i dostosowanie go do współpracy z OpenGL
Tworzenie okna za pomocą funkcji WinAPI. Klasa okna
Przystosowanie okna do współpracy z OpenGL za pomocą funkcji biblioteki WGL. Klasa OknoGL
Informacje o używanej wersji OpenGL i karcie graficznej
Przygotowanie i rysowanie sceny
Kolory
Zabawy kamerą
Tryb pełnoekranowy
Rozdział 2. Wektory i macierze kwadratowe
Wektory
Zapis za pomocą wersorów
Iloczyn skalarny
Iloczyn wektorowy
Przykład
Macierze kwadratowe
Czym są macierze?
Iloczyn macierzy oraz mnożenie wektora przez macierz
Przykład
Mnożenie macierzy nie jest przemienne
Macierz jednostkowa
Macierz odwrotna
Wyznacznik macierzy
Przykład
Sprytny zapis iloczynu wektorowego
Obliczanie macierzy odwrotnej
Przykład
Macierz transponowana
Operator gwiazdka
Macierz ortonormalna
Macierz przekształcenia układu współrzędnych
Iloczyn skalarny wektorów i macierze
Rzut wektora na kierunek wyznaczony przez inny wektor. Składowa wektora w kierunku wyznaczonym przez inny wektor
Macierze 4 × 4
Zadania
Rozdział 3. Macierze w OpenGL i współrzędne jednorodne
Przekształcenia układów współrzędnych w potoku renderowania OpenGL
Macierz rzutowania
Macierz model-widok oraz macierze świata i widoku
Współrzędne jednorodne
Rozdział 4. Tworzenie kontekstu renderowania. Profil zgodności. Rozszerzenia
Korzystanie z rozszerzeń ARB
Zawirowania z tworzeniem kontekstu
Użycie glext.h i wglext.h
Użycie biblioteki GLEW, zarządzającej rozszerzeniami
Użycie biblioteki DLL
Dołączenie kodu źródłowego GLEW do projektu aplikacji
Rozdział 5. Profil rdzenny. Bufory
Bufory werteksów
Tablica indeksów i bufor indeksów
Nawijanie i ukrywanie tylnych powierzchni
Konsolidacja buforów
Klasa werteksu
Przełączenie na profil rdzenny i liczenie strat
Rozdział 6. Shadery
Podstawy GLSL
Najprostsze shadery
Kompilacja shadera
Kolor i indeksy atrybutów werteksu
Trochę zabawy
Parametry shadera
Macierze świata, widoku i rzutowania
Kolumny i wiersze
Plan awaryjny
Zadania
Rozdział 7. Macierze używane w grafice 3D
Macierze rzutowania
Macierz rzutowania izometrycznego
Macierz rzutowania perspektywicznego
Różnice funkcji glFrustum i gluPerspective
Współrzędne viewportu
Przykład
Macierz świata
Translacja
Skalowanie i odbicia względem płaszczyzn układu współrzędnych
Obroty
Obrót wokół dowolnej osi
Macierze obrotu a kwaterniony jednostkowe
Złożenie obrotów i translacji – obrót wokół dowolnego punktu 164 Pochylenie
Rzut na płaszczyznę
Macierz widoku
Przykład złożenia macierzy widoku, świata i rzutowania
Zadania
Rozdział 8. Implementacja wektorów i macierzy
Wektory
Projekt interfejsu
Szablon TWektor
Specjalizacje szablonu dla wektora trój- i czteroelementowego
Testy
Macierze
Szablon TMacierzKwadratowa
Szablon TMacierzGrafika3D
Klasa MacierzOpenGL
Użycie obiektów macierzy w programie
Zadania
Rozdział 9. Sterowanie kamerą
Kontrola obrotów kamery za pomocą klawiszy
Tryby działania kamery
Kontrola orientacji kamery za pomocą myszy
Przesuwanie kamery myszą
Użycie rolki myszy
Swobodne obroty i ich powolne wygaszanie
Zadania
Rozdział 10. Aktorzy. Rysowanie brył. Animacja
Abstrakcja
Kwadrat
Zmiany w klasie okna
Pierwsza bryła
Optymalizacja rysowania wielu ciągów
Bufor głębi i pomijanie tylnych powierzchni
Kwadryki
Sfera
Aktor z buforem indeksów
Sfera z buforem indeksów
Końcowy zestaw brył: sfera, walec i sześcian
Animacja sceny
Zadania
Rozdział 11. Oświetlenie. Model Phonga
Model Phonga
Model Lamberta światła rozproszonego
Model rozbłysku Phonga
Uśrednianie normalnych
Definiowanie normalnych
Implementacja oświetlenia w shaderze werteksów
Aktualizacja położenia kamery
Ustawianie parametrów oświetlenia i materiału
Macierz normalnych
Osłabienie oświetlenia wraz z odległością
Obliczanie oświetlenia per pixel
Cel-shading
Zadania
Rozdział 12. Cienie rzucane
Implementacja metody rzutowania cieni
Materiał jako źródło informacji o kolorze aktorów
Rozdział 13. Odwzorowywanie tekstur
Współrzędne teksturowania
Filtrowanie tekstur i mipmapy
Zmiany w klasie werteksu i klasach aktorów
Wczytanie tekstur
Przygotowanie zestawu tekstur
Implementacja teksturowania w shaderze fragmentów
Tworzenie i usuwanie tekstur
Zawijanie tekstur
Tekstury w służbie realizmu
Zadanie
Rozdział 14. Użycie wielu tekstur
Dwie tekstury
Kombinacje tekstur
Globus i odwzorowywanie rozbłysku
Zadania
Dodatek. Biblioteki GLFW i GLM
Biblioteka GLM
Dodanie biblioteki GLM do projektu
Przykład użycia funkcji GLM
Biblioteka GLFW
Dodanie biblioteki GLFW do projektu
Inicjowanie okna z użyciem GLFW
Pętla główna
Obsługa zdarzeń
Indeks
Kategoria: | Grafika komputerowa |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-18047-8 |
Rozmiar pliku: | 11 MB |