Wstęp
Tutaj znajdują się podstawowe informacje dotyczące programowania z zastosowaniem
biblioteki OpenGL i GLUT oraz kurs programowania w bibliotece OpenGL.
Wszystkich zainteresowanych moim kursem OpenGL zapraszam do lektury książki, która została
napisana w oparciu o kurs, ale zawiera także wiele poprawek i uzupełnień (niedostępne w kursie
rodziały poświęcone generowaniu cieni, mapowaniu wypukłości i programom cieniowania). Książka
ukazała się nakładem Wydawnictwa BTC: OpenGL w praktyce.
Specyfikacje, książki i kursy
- glspec21.pdf.zip - The OpenGL Graphics System
Specification (Version 2.1); specyfikacja wersji 2.1 biblioteki OpenGL (wersja z 01.12.2006);
format PDF
- extensions.pdf.zip - Mark J. Kilgard:
All About OpenGL Extensions, including specifications for some significant OpenGL
extensions; format PDF
- nvopenglspecs.pdf.zip - Mark J. Kilgard:
NVIDIA OpenGL Extension Specifications; format PDF
- atiopengl.pdf.zip - ATI OpenGL Extension Support;
format PDF
- redbook.zip - Jackie Neider, Tom Davis, Mason Woo:
OpenGL Programming Guide Release 1 (Red Book); format HTML
- guide_pdf.zip - Jackie Neider, Tom Davis, Mason Woo:
OpenGL Programming Guide Release 1 (Red Book); format PDF
- pr_guide1_1.zip - ARB, Chris Frazier, Renate Kempf:
OpenGL Programming Guide Version 1.1 (Red Book); format HTML
- redbook.pdf.zip - ARB, Chris Frazier, Renate Kempf:
OpenGL Programming Guide Version 1.1 (Red Book); format PDF
- oglhtml.tar.gz - SGI: OpenGL Reference Manual Release 1
(Blue Book); format HTML
- bluebook.pdf.zip - SGI: OpenGL Reference Manual Release 1
(Blue Book); format PDF
- super_bible.tar.gz - Richard S. Wright, Jr.:
OpenGL Super Bible; format HTML
- opengl_course.tar.gz - Tom McReynolds, David Blythe:
Advanced Graphics Programming Techniques Using OpenGL. SIGGRAPH `98 Course; format HTML
- opengl_course.zip - Tom McReynolds, David Blythe:
Advanced Graphics Programming Techniques Using OpenGL. SIGGRAPH `98 Course; format PDF
- adv99.tar.gz - Tom McReynolds, David Blythe:
Advanced Graphics Programming Techniques Using OpenGL. SIGGRAPH `99 Course; format HTML
Kurs OpenGL 3.2
- Wprowadzenie - historia OpenGL;
typy danych; składnia poleceń; zmienne stanu; obsługa błędów; operacje OpenGL i potok
renderingu; artykuł w formacie PDF
- Szablon aplikacji OpenGL -
szablon aplikacji OpenGL dla Microsoft Windows (API WIN32 + WGL); szablon aplikacji OpenGL
dla X Window System (Xlib + Xpmlib + GLX); biblioteka do obsługi rozszerzeń; program
przykładowy (Linux/WIN32); artykuł w formacie PDF
- Wierzchołki -
tablice wierzchołków; obiekty bufora; obsługa programów cieniowania; atrybuty wierzchołków;
dwa programy przykładowe (Linux/WIN32); artykuł w formacie PDF
- Scena i przekształcenia
- macierze, wektory i kwaterniony; transformacja współrzędnych wierzchołków; scena 3D;
zmienne jednorodne w programach cieniowania; 6 programów przykładowych (Linux/WIN32);
artykuł w formacie PDF
- GLSL - OpenGL Shading Language 1.50;
podstawy składni, preprocesor, podstawowe typy, operatory i wyrażenia, kwalifikatory typów,
instrukcje i struktura programu, wbudowane zmienne, wbudowane funkcje; artykuł w formacie PDF
- Prymitywy
- prymitywy graficzne: linie, punkty i wielokąty; polecenia renderingu; obiekty tablic
wierzchołków (VAO); 4 programy przykładowe (Linux/WIN32); artykuł w formacie PDF
- Cieniowanie i oświetlenie
- cieniowanie, modele oświetlenia Phonga i Blinna-Phonga, generowanie wektorów normalnych,
obiekty bufora bloków zmiennych jednorodnych (UBO); 11 programów przykładowych (Linux/WIN32);
artykuł w formacie PDF
- Tekstury
- tablice pikseli, obiekty tekstury, kompresja tekstur, parametry i właścowości tekstury;
9 programów przykładowych (Linux/WIN32); artykuł w formacie PDF
- Bufor ramki
- obiekty bufora ramki (FBO), obiekty bufora renderingu, operacje na buforze ramki, pobieranie
i kopiowanie pikseli; 4 programy przykładowe (Linux/WIN32); artykuł w formacie PDF
- Fragmenty - przetwarzanie fragmentów; testy:
własności piksela, nożycowy, szablonu, głębokości; mieszanie kolorów; konwersja sRGB; operacje
logiczne; 4 programy przykładowe (Linux/WIN32); artykuł w formacie PDF
- Antyaliasing - antyaliasing:
antyaliaisng linii i punktów, wielopróbkowanie (multisampling) i inne techniki antyaliasingu;
6 programów przykładowych (Linux/WIN32); artykuł w formacie PDF
- Synchronizacja i operacje asynchroniczne
- test zasłaniania, rendering warunkowy, transformacje sprzężone zwrotnie;
3 programy przykładowe (Linux/WIN32); artykuł w formacie PDF
- Rozszerzenia - rozszerzenia OpenGL:
przegląd rozszerzeń ARB/EXT, filtracja anizotropowa tekstur, kompresja tekstur,
9 programów przykładowych (Linux/WIN32); artykuł w formacie PDF
Kurs OpenGL 1.X/2.X
- Podstawy - podstawy biblioteki OpenGL: składnia,
typy danych, układ współrzędnych, barwy, bufor ramki, okno renderingu, maszyna stanów, obsługa
błędów; artykuł w formacie PDF
- Pierwszy program - pierwszy program
w OpenGL: rysowanie sceny 3D (kolor tła, czyszczenie bufora koloru, kolor obiektu, definiowanie
obiektu, zamiana buforów koloru), tworzenie okna renederingu, obsługa menu podręcznego; tekst
źródłowy programu; artykuł w formacie PDF
- Definiowanie sceny 3D - modyfikacja
obszaru renderingu, rzutowanie prostokątne, rzutowanie perspektywiczne, położenie obserwatora,
5 przykładowych programów, artykuł w formacie PDF;
- Przekształcenia geometryczne
- obrót, skalowanie, przesunięcie, mnożenie macierzy, ładowanie macierzy, składanie
przekształceń, bryły w bibliotece GLUT (kula, sześcian, stożek, torus, dwunastościan, czajnik,
ośmiościan, czworościan, dwudziestościan), operacje na stosie macierzy, stos macierzy
modelowania; przeliczenia współrzędnych w przestrzeni widoku na współrzędne w przestrzeni okna
i odwrotnie; obsługa myszki, dwa przykładowe programy; artykuł w formacie PDF
- Okrawanie i obcinanie - okrawanie
obszaru renderingu, płaszczyzny obcinające; przykładowy program, artykuł w formacie PDF;
- Elementarne obiekty geometryczne
- prymitywy graficzne: punkty, linie, łamane, łamane zamknięte, trójkąty, wstęgi trójkątów,
wachlarze trójkątów, czworokąty, wachlarze czworokątów, wielokąty, prostokąty; definiowane
współrzędnych wierzchołków prymitywów; wielkość punktów; grubość i wzory linii; trzy przykładowe
programy; artykuł w formacie PDF
- Wielokąty - wielokąty: trójkąty, wstęgi
trójkątów, wachlarze trójkątów, czworokąty, wachlarze czworokątów, wielokąty, prostokąty;
ukrywanie stron wielokąta; tryby rysowania wielokąta (wierzchołki, krawędzie, wypełnienie);
wypełnianie wielokątów wzorem; ukrywanie krawędzi wielokąta; kafelkowanie (podział) wielokątów;
dwa przykładowe programy; artykuł w formacie PDF
- Kolory i cieniowanie - kolory
i cieniowanie w OpenGL: bufor koloru; tryb bezpośredni RGB(A), tryb indeksowy; cieniowanie
płaskie i gładkie (Gourauda); dithering; przykładowy program; artykuł w formacie PDF
- Rozszerzenia - informacja o implementacji
biblioteki OpenGL; wprowadzenie do rozszerzeń OpenGL; budowa specyfikacji rozszerzenia;
używanie rozszerzeń na przykładzie ARB_transpose_matrix; dwa przykładowe programy;
artykuł w formacie PDF
- Mapy bitowe - mapy bitowe i fonty bitmapowe
w OpenGL; dwa przykładowe programy; dwa polskie fonty; artykuł w formacie PDF
- Mapy pikselowe - mapy pikselowe: rysowanie,
odczyt, kopiowanie, skalowanie; transfer pikseli; przykładowy program odczytujący pliki TARGA;
artykuł w formacie PDF
- Bufor głębokości - zasada działania
i przeznaczenie bufora głębokości; testy bufora głębokości; czyszczenie bufora głębokości;
zakres wartości bufora głębokości; przesunięcie wartości głębi; wycinanie fragmentów sceny
przy pomocy bufora głębokości; trzy przykładowe programy; artykuł w formacie PDF
- Światła i materiały - model oświetlenia
w bibliotece OpenGL; parametry źródeł światła; parametry modelu oświetlenia; właściwości
materiałów; śledzenie kolorów; wektory normalne; kwadryki; pięć przykładowych programów;
artykuł w formacie PDF
- Listy wyświetlania - zasada działania
listy wyświetlania; tworzenie i usuwanie listy wyświetlania; wykaz funkcji nie umieszczanych
na liście wyświetlania; generowanie identyfikatorów list wyświetlania; program przykładowy;
artykuł w formacie PDF
- Mieszanie kolorów - równanie mieszania
kolorów, współczynniki mieszania kolorów; dwa programy przykładowe, w tym efekt przezroczystości;
artykuł w formacie PDF
- Przetwarzanie obrazów - opcjonalny
podzbiór przetwarzania obrazów: tryby transferu pikseli, tablice kolorów, filtry splotowe,
histogram, operacja minimum-maksimum, macierz koloru; program przykładowy; artykuł w formacie PDF
- Bufor szablonowy - budowa i działanie
bufora szablonowego; test bufora szablonowego; czyszczenie bufora szablonowego; rozłączny
bufor szablonowy; cztery programy przykładowe, w tym odbicie i CSG (ang. Constructive Solid
Geometry); artykuł w formacie PDF
- Bufor akumulacyjny - budowa i działanie
bufora akumulacyjnego; sterowanie buforem akumulacyjnym; czyszczenie bufora akumulacyjnego;
dwa programy przykładowe z efektami: rozmycia w ruchu (ang. motion blur) oraz głębią ostrości
(ang. depth of field) oraz program z cyfrową filtracją obrazów; artykuł w formacie PDF
- Antyaliasing - zjawisko aliasingu i metody
antyaliasingu; ustawianie jakości renderingu; antyaliasing punktów, linii i wielokątów;
antyaliasing z wykorzystaniem bufora akumulacyjnego; wielopróbkowanie (ang. multisampling);
cztery programy przykładowe; artykuł w formacie PDF
- Tekstury - tekstury jednowymiarowe, dwuwymiarowe
i trójwymiarowe; tekstury zastępcze (proxy); tekstury sześcienne (kubiczne); tekstury głębi;
kompresja tekstur; współrzędne, parametry i filtracja tekstur; mipmapy; obiekty i priorytety
tekstur; parametry środowiska tesktur; wieloteksturowanie; automatyczne generowanie
współrzędnych tekstur; dziesięć programów przykładowych, w tym mapy świetlne, mapowanie kubiczne,
tekstury alfa, tekstura 3D, kompresja tekstur, drugorzędny kolor odbicia oraz wczytywanie plików
OBJ; artykuł w formacie PDF
- Selekcja obiektów - zmiana trybu
renderowania, stos nazw obiektów, przetwarzanie rekordu trafień; program przykładowy; artykuł
w formacie PDF
- Sprzężenie zwrotne - zmiana trybu
renderowania, bufor sprzężenia zwrotnego i jego przetwarzanie; program przykładowy; artykuł
w formacie PDF
- Tablice wierzchołków - definiowanie
i renderowanie danych, tablice przeplatane, tablice indeksowe, pobieranie adresów tablic, stos
atrybutów klienta OpenGL; dwa programy przykładowe; artykuł w formacie PDF
- Mgła - parametry, obliczanie i jakość mgły;
dwa programy przykładowe (mgła odległościowa i mgła objętościowa); artykuł w formacie PDF
- Systemy cząstek - podstawy budowy
systemów cząstek, rozszerzona geometria punktów (ARB_point_parameters), sprajty punktowe
(ARB_point_sprite); program przykładowy animujący śnieg; artykuł w formacie PDF
- Krzywe i powierzchnie Béziera
- ewaluacja krzywych i powierzchni Béziera, pobieranie danych map; dwa programy przykładowe;
artykuł w formacie PDF
- NURBS - obiekty (krzywe i powierzchnie) NURBS;
wycinanie fragmentów powierzchni; dwa programy przykładowe; artykuł w formacie PDF
- Test zasłaniania - bryły ograniczające
i obiekty analizy przesłonięć; program przykładowy; artykuł w formacie PDF
- Obiekty buforowe - obiekty buforowe
wierzchołków (VBO) i obiekty buforowe pikseli (PBO); dwa programy przykładowye; artykuł
w formacie PDF
- GLSL - OpenGL Shading Language 1.20; procesor
wierzchołków, procesor fragmentów, podstawy składni, preprocesor, podstawowe typy, operatory
i wyrażenia, kwalifikatory typów, instrukcje i struktura programu, wbudowane zmienne,
wbudowane funkcje; artykuł w formacie PDF
- Optymalizacja - podstawowe zasady optymalizji
programów w OpenGL; weryfikacja błędów, podstawowe zasady konstrukcji programów, diagnoza
wąskiego gardła wydajności, metody redukcji obciążenia przetwarzania pikseli, metody redukcji
obciążenia przetwarzania wierzchołków; artykuł w formacie PDF
- Zmienne stanu - kompletny wykaz zmiennych
stanu OpenGL 2.1 zawarty w 54 tabelach; program przykładowy przedstawiający zmienne
zależne od implementacji; artykuł w formacie PDF
Rozszerzenia OpenGL
Biblioteka GLUT
Biblioteka GLUT (ang. OpenGL Utility Toolkit) to wieloplatformowe API
obsługujące interfejs użytkownika (okna, myszka, klawiatura) przygotowane do
współpracy z OpenGL. Jeżeli chcemy napisać program wykorzystujący grafikę
OpenGL z zamiarem pracy na różnych platformach, użycie biblioteki GLUT jest
najlepszym wyborem. Poniżej zamieszczam najważniejsze informacje o bibliotece,
oraz pliki niezbędne do uruchomienia niektórych przykładowych programów.
Zainteresowanych bliższym poznaniem biblioteki GLUT zapraszam na stronę:
http://www.opengl.org/developers/documentation/glut/
- glut-3.spec.pdf.zip - Mark J. Kilgard:
The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3;
specyfikacja biblioteki GLUT, format PDF,
- glut-3.spec.html.zip - Mark J. Kilgard:
The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3;
specyfikacja biblioteki GLUT, format HTML,
- glut-3.7.6-bin.zip - biblioteka GLUT w wersji
3.7.6 dla Windows, plik DLL, plik nagłówkowy *.h oraz biblioteka importowa
w formacie COFF (MSVC++),
- glutdlls38beta.zip - biblioteka GLUT w wersji
3.8 dla Windows, plik DLL, plik nagłówkowy *.h oraz biblioteka importowa
w formacie COFF (MSVC++).
© Janusz Ganczarski
JanuszG@enter.net.pl