OpenGL. Księga eksperta. Wydanie V - Helion
Tytuł oryginału: OpenGL SuperBible: Comprehensive Tutorial and Reference (5th Edition)
Tłumaczenie: Łukasz Piwko
ISBN: 978-83-246-2976-3
stron: 688, Format: 172x245, okładka: twarda
Data wydania: 2011-05-09
Księgarnia: Helion
Cena książki: 119,00 zł
Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!
- Jak sprawnie tworzyć podstawowe obiekty, oświetlać je i cieniować?
- Jak napisać własne programy, korzystając z biblioteki OpenGL i języka GLSL?
- Jak programować grafikę na urządzenia przenośne, takie jak iPhone, iPod czy iPad?
Po prawie dwudziestu latach na rynku biblioteka OpenGL jest dziś wiodącym API w dziedzinie programowania grafiki trójwymiarowej, gier 3D, wizualizacji, symulacji, modelowania naukowego, a nawet edytowania obrazów i filmów dwuwymiarowych. Swój sukces zawdzięcza nie tylko łatwości użycia, ale przede wszystkim kompatybilności z niemal wszystkimi platformami dostępnymi na rynku. Świetnie sprawdza się zarówno w komputerach PC z systemem Windows, jak i komputerach Mac, a także na stacjach uniksowych, w centrach rozrywki opartych o lokalizację, na najbardziej znanych konsolach do gier, w kieszonkowych grach elektronicznych, a nawet w oprzyrządowaniu lotniczym czy samochodowym. Nie bez znaczenia dla spopularyzowania tej biblioteki był także fakt, że można ją rozszerzać, dzięki czemu ma ona wszystkie zalety otwartego standardu, a dodatkowo można wzbogacać jej implementację o własne dodatki.
"OpenGL. Księga eksperta. Wydanie 5" to nowe, zaktualizowane (specyfikacja OpenGL 3.3) wydanie znanego podręcznika dla wszystkich programistów, bez względu na poziom ich zaawansowania. Książka ta stanowi wyczerpujący kurs tworzenia niesamowitych wizualizacji 3D, gier oraz wszelkiego rodzaju grafik. Dzięki niej nauczysz się pisać programy wykorzystujące bibliotekę OpenGL, konfigurować środowisko pracy do przetwarzania grafiki trójwymiarowej oraz tworzyć podstawowe obiekty, oświetlać je i cieniować. Następnie zgłębisz tajniki języka OpenGL Shading Language i zaczniesz sprawnie pisać własne programy, wprowadzać do nich rozmaite efekty wizualne oraz zwiększać ich wydajność. Poznasz wszystkie najnowsze techniki programowania przy użyciu biblioteki OpenGL, takie jak przekształcenia, nakładanie tekstur, cieniowanie, zaawansowane bufory czy zarządzanie geometrią. Przejdziesz także szczegółowy kurs programowania grafiki w urządzeniach iPhone, iPod touch oraz iPad!
W tym wyczerpującym podręczniku znajdziesz:
- praktyczne wprowadzenie do technik programowania grafiki trójwymiarowej czasu rzeczywistego
- rdzenne techniki OpenGL 3.3 w zakresie renderowania, przekształcania i teksturowania geometrii
- wiedzę na temat pisania programów cieniujących, popartą praktycznymi przykładami
- opis technik programowania na różnych platformach — Windows (także Windows 7), Mac OS X, GNU/Linux, Unix — oraz układach wbudowanych
- informacje na temat programowania przy użyciu biblioteki OpenGL aplikacji przeznaczonych dla urządzeń iPhone, iPod touch oraz iPad (kurs prowadzony krok po kroku i ilustrowany przykładowymi programami)
- zaawansowane techniki buforowania, renderowanie w pełnej rozdzielczości przy użyciu buforów i tekstur zmiennoprzecinkowych
- możliwości przetwarzania fragmentów, czyli zarządzania końcową częścią potoku przetwarzania grafiki
- zaawansowane techniki cieniowania i zarządzania geometrią
Kompletny przewodnik po najpopularniejszej na świecie bibliotece do programowania grafiki trójwymiarowej OpenGL 3.3!
Osoby które kupowały "OpenGL. Księga eksperta. Wydanie V", wybierały także:
- OpenGL. Kurs video. Wprowadzenie do programowania grafiki komputerowej 99,00 zł, (44,55 zł -55%)
- OpenGL. Podstawy programowania grafiki 3D 89,00 zł, (44,50 zł -50%)
- OpenGL. Receptury dla programisty 54,90 zł, (27,45 zł -50%)
- OpenGL. Księga eksperta. Wydanie VII 119,00 zł, (89,25 zł -25%)
- Wprowadzenie do potoku renderującego OpenGL 58,71 zł, (46,97 zł -20%)
Spis treści
OpenGL. Księga eksperta. Wydanie V -- spis treści
Podziękowania (17)
O autorach (21)
Wstęp do wydania piątego (23)
Wstęp do wydania czwartego (25)
Wstęp do wydania trzeciego (29)
Wprowadzenie (31)
- Co nowego w tym wydaniu (31)
- Struktura książki (32)
- Część I: Podstawy (32)
- Część II: Techniki średnio zaawansowane i zaawansowane (34)
- Część III: OpenGL na różnych platformach (34)
- Konwencje typograficzne (35)
- Witryna internetowa (35)
Część I: Podstawy (37)
Rozdział 1. Wprowadzenie do grafiki trójwymiarowej i biblioteki OpenGL (39)
- Historia grafiki komputerowej w skrócie (40)
- Elektryczność (40)
- Wejście w trzeci wymiar (41)
- Podstawowe efekty trójwymiarowe i najważniejsze pojęcia (44)
- Przekształcanie i rzutowanie (44)
- Rasteryzacja (45)
- Cieniowanie (45)
- Teksturowanie (46)
- Mieszanie kolorów (47)
- Łączenie punktów (47)
- Typowe zastosowania grafiki trójwymiarowej (47)
- Trzy wymiary w czasie rzeczywistym (47)
- Trzy wymiary bez czasu rzeczywistego (48)
- Programy do cieniowania (50)
- Podstawowe zasady programowania grafiki trójwymiarowej (52)
- To nie jest zestaw narzędzi (52)
- Układy współrzędnych (52)
- Rzutowanie z trzech w dwa wymiary (56)
- Podsumowanie (58)
Rozdział 2. Rozpoczynanie pracy (61)
- Czym jest OpenGL (62)
- Ewolucja standardu (63)
- Mechanizm rozszerzeń (64)
- Czyje to rozszerzenie (66)
- Korzystanie z biblioteki OpenGL (71)
- Narzędzia pomocnicze (72)
- Biblioteka GLUT (72)
- Biblioteka GLEW (73)
- Biblioteka GLTools (73)
- Szczegóły interfejsu (74)
- Typy danych (74)
- Błędy OpenGL (76)
- Sprawdzanie wersji (77)
- Pobieranie wskazówek z funkcji glHint (77)
- Maszyna stanów OpenGL (78)
- Konfigurowanie środowiska programistycznego w systemie Windows (79)
- Dodawanie ścieżek (79)
- Tworzenie projektu (81)
- Dodawanie własnych plików (82)
- Konfigurowanie środowiska programistycznego w systemie Mac OS X (84)
- Niestandardowe ustawienia kompilacji (85)
- Tworzenie nowego projektu (85)
- Szkielety, nagłówki i biblioteki (87)
- Nasz pierwszy trójkąt (90)
- Układ współrzędnych (95)
- Konfigurowanie ustawień (98)
- Zabieramy się do pracy (100)
- Ożywianie sceny (101)
- Klawisze specjalne (101)
- Odświeżanie ekranu (103)
- Prosta animacja (103)
- Podsumowanie (104)
Rozdział 3. Podstawy renderowania (105)
- Rysowanie punktów w trzech wymiarach (106)
- Podstawowy potok graficzny (106)
- Klient-serwer (107)
- Programy do cieniowania (108)
- Konfigurowanie układu współrzędnych (110)
- Rzutowanie ortogonalne (111)
- Rzutowanie perspektywiczne (112)
- Standardowe programy do cieniowania (112)
- Atrybuty (113)
- Zmienne typu uniform (113)
- Łączenie punktów (115)
- Punkty i linie (116)
- Rysowanie trójkątów w trzech wymiarach (120)
- Nawinięcie (121)
- Prosty kontener porcji danych (124)
- Niechciana geometria (126)
- Przesuwanie wielokątów (131)
- Wycinanie nożycami (134)
- Mieszanie kolorów (135)
- Łączenie kolorów (136)
- Zmiana równania mieszania (139)
- Wygładzanie (140)
- Podsumowanie (145)
Rozdział 4. Podstawy przekształceń geometrycznych. Najważniejsze informacje o wektorach i macierzach (147)
- Czy to jest ten straszny rozdział z matematyką? (148)
- Szybki kurs matematyki (149)
- Wektory, czyli w którym kierunku (149)
- Macierz (152)
- Przekształcenia (154)
- Współrzędne oka (154)
- Przekształcenia punktu widzenia (155)
- Przekształcenia modelowania (156)
- Dwoistość model-widok (157)
- Przekształcenia rzutowania (158)
- Przekształcenia widoku (159)
- Macierz model-widok (160)
- Konstruowanie macierzy (160)
- Łączenie przekształceń (164)
- Stosowanie macierzy model-widok (165)
- Więcej obiektów (167)
- Klasa zestawów trójkątów (167)
- Macierz rzutowania (171)
- Rzutowanie prostopadłe (171)
- Rzutowanie perspektywiczne (172)
- Macierz rzutowania model-widok (174)
- Potok przekształceń (178)
- Stos macierzy (179)
- Modyfikowanie potoku (180)
- Wersja wzbogacona (184)
- Poruszanie się przy użyciu kamer i aktorów (185)
- Układ odniesienia aktora (186)
- Kąty Eulera. "Użyj układu odniesienia, Luke!" (187)
- Obsługa kamery (188)
- Dodawanie aktorów (191)
- Oświetlenie (192)
- Podsumowanie (193)
Rozdział 5. Tekstury - podstawy (195)
- Surowe dane obrazów (196)
- Pakowanie pikseli (196)
- Piksmapy (199)
- Upakowane formaty pikseli (200)
- Zapisywanie pikseli (203)
- Wczytywanie pikseli (205)
- Ładowanie tekstur (208)
- Wykorzystywanie bufora kolorów (209)
- Aktualizowanie tekstur (210)
- Obiekty tekstur (211)
- Nakładanie tekstur (212)
- Współrzędne tekstury (212)
- Parametry tekstur (214)
- Praktyczne zastosowanie poznanych wiadomości (217)
- Mipmapy (222)
- Filtrowanie mipmap (223)
- Generowanie poziomów mipmap (225)
- Zastosowanie mipmap (225)
- Filtrowanie anizotropowe (233)
- Kompresja tekstur (235)
- Kompresowanie tekstur (236)
- Ładowanie tekstur skompresowanych (238)
- Ostatni przykład (239)
- Podsumowanie (240)
Rozdział 6. Myślenie niekonwencjonalne - programy do cieniowania (241)
- GLSL 101 (242)
- Zmienne i typy danych (243)
- Kwalifikatory zmiennych (246)
- Prawdziwy shader (248)
- Kompilowanie, wiązanie i konsolidowanie (252)
- Praktyczne wykorzystanie shadera (258)
- Wierzchołek prowokujący (259)
- Dane uniform shadera (259)
- Znajdowanie danych uniform (260)
- Zmienne uniform skalarne i wektorowe (260)
- Tablice uniform (261)
- Macierze uniform (262)
- Płaski shader (262)
- Funkcje standardowe (265)
- Funkcje trygonometryczne (265)
- Funkcje wykładnicze (266)
- Funkcje geometryczne (267)
- Funkcje macierzowe (267)
- Funkcje porównywania wektorów (267)
- Inne często używane funkcje (267)
- Symulowanie światła (272)
- Światło rozproszone (272)
- Shader światła rozproszonego (274)
- Model oświetlenia ADS (278)
- Cieniowanie Phonga (281)
- Korzystanie z tekstur (285)
- Nic, tylko teksele (285)
- Oświetlanie tekseli (287)
- Anulowanie przetwarzania fragmentów (289)
- Teksturowanie w stylu kreskówkowym - teksele w roli światła (292)
- Podsumowanie (294)
Rozdział 7. Tekstury - techniki zaawansowane (295)
- Tekstury prostokątne (296)
- Wczytywanie tekstury prostokątnej (297)
- Zastosowanie tekstur prostokątnych (297)
- Tekstury sześcienne (300)
- Wczytywanie tekstur sześciennych (301)
- Tworzenie pudła nieba (302)
- Tworzenie efektu odbicia (304)
- Multiteksturowanie (305)
- Wiele współrzędnych tekstur (306)
- Przykład multiteksturowania (306)
- Teksturowanie punktów (309)
- Teksturowanie punktów (309)
- Rozmiar punktów (310)
- Podsumowanie wiadomości (311)
- Parametry punktów (314)
- Nadawanie punktom kształtów (314)
- Obracanie punktów (315)
- Tablice tekstur (317)
- Ładowanie tablicy tekstur dwuwymiarowych (317)
- Indeksowanie tablicy tekstur (319)
- Uzyskiwanie dostępu do tablic tekstur (320)
- Tekstury zastępcze (320)
- Podsumowanie (322)
Część II: Techniki średnio zaawansowane i zaawansowane (323)
Rozdział 8. Buforowanie - od tej pory przechowywanie danych zależy od Ciebie (325)
- Bufory (326)
- Tworzenie własnych buforów (327)
- Napełnianie buforów (328)
- Obiekty bufora pikseli (329)
- Tekstury buforowe (336)
- Obiekt bufora obrazu, czyli opuszczamy okno (338)
- Sposób użycia FBO (339)
- Obiekt bufora renderowania (339)
- Bufory rysowania (341)
- Kompletność bufora obrazu (344)
- Kopiowanie danych w buforach obrazu (347)
- Praktyczny przykład wykorzystania buforów FBO (348)
- Renderowanie do tekstur (353)
- Podsumowanie (358)
Rozdział 9. Buforowanie - techniki zaawansowane (359)
- Uzyskiwanie dostępu do danych (360)
- Mapowanie buforów (360)
- Kopiowanie buforów (361)
- Wysyłanie danych z shadera pikseli i odwzorowywanie fragmentów wyjściowych (362)
- Nowe formaty dla nowej generacji urządzeń (364)
- Precyzyjne formaty zmiennoprzecinkowe (365)
- Wielopróbkowanie (379)
- Liczby całkowite (383)
- sRGB (384)
- Kompresja tekstur (386)
- Podsumowanie (388)
Rozdział 10. Operacje na fragmentach - koniec potoku (389)
- Okrawanie - przycinanie geometrii na wymiar (390)
- Wielopróbkowanie (391)
- Powierzchnia pokrycia próbki (391)
- Maska próbki (392)
- Podsumowanie dotychczasowych wiadomości (393)
- Operacje na szablonach (397)
- Testowanie głębi (400)
- Ograniczanie wartości głębi (400)
- Mieszanie kolorów (400)
- Równanie mieszania (401)
- Funkcja mieszania (401)
- Zebranie wiadomości (403)
- Rozsiewanie kolorów (404)
- Operacje logiczne (405)
- Maskowanie wyniku (405)
- Maskowanie koloru (406)
- Maskowanie głębi (406)
- Maskowanie buforów szablonu (407)
- Zastosowanie masek (407)
- Podsumowanie (407)
Rozdział 11. Programy cieniujące - techniki zaawansowane (409)
- Zaawansowane shadery wierzchołków (410)
- Fizyczne symulacje w shaderze wierzchołków (410)
- Shadery geometrii (417)
- Shader geometrii przepuszczający dane (417)
- Zastosowanie shadera geometrii w programie (419)
- Usuwanie geometrii w shaderach geometrii (423)
- Modyfikowanie geometrii w shaderze geometrii (426)
- Generowanie geometrii w shaderze geometrii (427)
- Zmienianie typu obiektu podstawowego w shaderze geometrii (431)
- Nowe typy obiektów podstawowych w shaderach geometrii (433)
- Zaawansowane shadery fragmentów (436)
- Przetwarzanie końcowe w shaderze fragmentów - korekcja kolorów (438)
- Przetwarzanie końcowe - splot (439)
- Generowanie danych obrazu w shaderze fragmentów (442)
- Ignorowanie zadań w shaderze fragmentów (445)
- Kontrolowanie głębi poszczególnych fragmentów (447)
- Inne zaawansowane funkcje shaderów (448)
- Interpolacja i kwalifikatory pamięci (448)
- Inne zaawansowane funkcje wbudowane (452)
- Obiekty bufora bloku zmiennych jednorodnych (454)
- Tworzenie bloków zmiennych jednorodnych (455)
- Podsumowanie (464)
Rozdział 12. Zarządzanie geometrią - techniki zaawansowane (465)
- Zbieranie informacji o potoku OpenGL - zapytania (466)
- Przygotowywanie zapytania (467)
- Wysyłanie zapytania (468)
- Pobieranie wyników zapytania (468)
- Wykorzystanie wyniku zapytania (469)
- Zmuszanie OpenGL do podejmowania decyzji (472)
- Mierzenie czasu wykonywania poleceń (475)
- Przechowywanie danych w pamięci GPU (477)
- Przechowywanie danych w buforach danych wierzchołków (478)
- Przechowywanie w buforach indeksów wierzchołków (482)
- Organizowanie buforów przy użyciu obiektów tablic wierzchołków (483)
- Optymalne rysowanie dużych ilości geometrii (486)
- Łączenie funkcji rysujących (486)
- Łączenie geometrii poprzez restart obiektów podstawowych (487)
- Rysowanie wielu egzemplarzy jednego obiektu (489)
- Automatyczne pobieranie danych (495)
- Przechowywanie przekształconych wierzchołków - przekształcenie zwrotne (500)
- Przekształcenie zwrotne (501)
- Wyłączanie rasteryzacji (506)
- Liczenie wierzchołków przy użyciu zapytań obiektów podstawowych (507)
- Wykorzystanie wyników zapytania obiektów podstawowych (508)
- Przykład zastosowania przekształcenia zwrotnego (509)
- Przycinanie i rysowanie tego, co się chce (518)
- Definiowanie własnych płaszczyzn obcinania (519)
- Synchronizacja rysowania (523)
- Podsumowanie (527)
Część III: OpenGL na różnych platformach (529)
Rozdział 13. OpenGL w systemie Windows (531)
- Implementacje OpenGL w systemie Windows (532)
- OpenGL firmy Microsoft (533)
- Nowoczesne sterowniki graficzne (533)
- Rozszerzenia OpenGL (534)
- Rozszerzenia WGL (536)
- Podstawy renderowania w systemie Windows (537)
- Konteksty urządzenia GDI (538)
- Formaty pikseli (539)
- Kontekst renderingu OpenGL (547)
- Konsolidacja wiadomości (550)
- Tworzenie okna (550)
- Rendering pełnoekranowy (555)
- Podwójne buforowanie (556)
- Zapobieganie poszarpaniu obrazu (557)
- Podsumowanie (557)
Rozdział 14. OpenGL w systemie Mac OS X (559)
- Cztery twarze OpenGL w systemie Mac (560)
- Biblioteka OpenGL i interfejs Cocoa (561)
- Tworzenie programu Cocoa (561)
- Składanie wszystkiego razem (566)
- Buforowanie pojedyncze czy podwójne (568)
- Program SphereWorld (569)
- Renderowanie pełnoekranowe (573)
- Renderowanie pełnoekranowe w Cocoa (574)
- CGL (581)
- Synchronizacja szybkości klatek (581)
- Przyspieszanie operacji wypełniania (582)
- Wielowątkowość w OpenGL (583)
- Podsumowanie (583)
Rozdział 15. OpenGL w Linuksie (585)
- Wiadomości podstawowe (586)
- Rys historyczny (586)
- Co to jest X (586)
- Zaczynamy (587)
- Sprawdzanie obsługi OpenGL (587)
- Konfiguracja Mesy (588)
- Konfiguracja sterowników sprzętowych (589)
- Konfiguracja bibliotek GLUT i GLEW (589)
- Budowa aplikacji OpenGL (590)
- GLX - łączenie z X Windows (591)
- Ekrany i X Windows (592)
- Zarządzanie konfiguracjami i obiektami widoku (592)
- Okna i powierzchnie renderingu (595)
- Rozszerzanie OpenGL i GLX (597)
- Zarządzanie kontekstem (597)
- Synchronizacja (601)
- Zapytania GLX (602)
- Składanie aplikacji (602)
- Podsumowanie (605)
Rozdział 16. OpenGL ES w urządzeniach przenośnych (607)
- OpenGL na diecie (608)
- Do czego służy ES (608)
- Rys historyczny (609)
- Wybór wersji (611)
- ES 2.0 (611)
- Środowisko układów wbudowanych (615)
- Kwestie projektowe (616)
- Rozwiązywanie problemów z ograniczeniami (616)
- Działania na liczbach stałoprzecinkowych (617)
- EGL - nowe środowisko okienkowe (619)
- Ekrany EGL (619)
- Tworzenie okna (621)
- Zarządzanie kontekstem (625)
- Prezentowanie buforów i synchronizacja renderowania (626)
- Jeszcze trochę o EGL (627)
- Środowiska układów wbudowanych (628)
- Popularne systemy operacyjne (628)
- Rozszerzenia producentów (628)
- Dla domowego rzemieślnika (628)
- Platformy przenośne firmy Apple (629)
- Tworzenie projektu aplikacji dla iPhone'a (629)
- Przesiadka na iPhone'a (633)
- Podsumowanie (640)
Dodatki (641)
Dodatek A: Dalsza lektura (643)
Dodatek B: Słowniczek (647)
Skorowidz (653)