Zmienne stanu opisują bieżące właściwości maszyny stanu OpenGL. Do odczytu zmiennych stanu służy szereg poznanych już funkcji z bardzo liczej grupy glGet. Zmienne stanu można podzielić na dwie zasadnicze grupy. Pierwsza z nich to zmienne opisujące bieżące ustawienia maszyny stanów OpenGL, druga grupa określa zmienne stanu zależne od implementacji biblioteki.
Zamieszczone dalej opisy zmiennych stanu korzystają ze słowniczka przedstawionego w tabeli 1. Zmienne stanu wchodzące w skład opcjonalnego podzbioru funkcji przetwarzających obrazy zaznaczone są szarym kolorem.
Tabela 1: Rodzaje wartości zmiennych stanu
W poniższych tabelach nie zaznaczono zmiennych stanu, których wartość nie jest dostępna dla programu. W szczególności dotyczy to zmiennych związanych z parą funkcji glBegin/glEnd. Szczegóły Czytelnik znajdzie w specyfikacji biblioteki OpenGL.
Tabela 2 przedstawia początkowe wartości bieżących zmiennych stanu. Poza zmiennymi zawartymi w tabeli biblioteka OpenGL posiada trzy zmienne nienazwane, które dotyczącą parametrów związanych z ostatnim przetwarzanym wierzchołkiem. Są to składowe jego koloru - typ C (w trybie indeksowym numer indeksu koloru do tablicy kolorów - typ C I ) oraz współrzędne tekstury związane z tym wierzchołkiem - typ T . Zmienne te nie posiadają funkcji pobierających.
W tabeli 9 zawierającej zmienne stanu związane z obiektami buforowymi pominięto zmienną związaną z danymi obiektu buforowego (typ n × BM U ), które pobiera funkcja glGetBufferSubData.
W tabeli 18 nie została przedstawiona funkcja glGetPolygonStipple, która zwraca wzór wypełnienia wielokąta (typ danych I ). Początkowo wszystkie bity maski wzoru wypełnienia wielokąta zawierają wartości 1.
W tabeli 45 nie przedstawiono dwóch zmiennych stanu obiektu programu cieniowania, które nie posiadają identyfikatorów:
W tabeli 46 zmiennych stanu obiektów programów cieniowania pominięto następujące zmienne stanu, które nie posiadaną identyfikatorów:
Wśród zmiennych stanu zależnych od implementacji, przedstawionych w tabelach 49 - 54, nie zostały wymienione następujące nienazwane zmienne stanu, które nie posiadają funkcji pobierających:
W tabeli 55 przedstawiającej pozostałe zmienne stanu pominięto następujące zmienne, które nie posiadają identyfikatorów i/lub funkcji pobierającej:
Tabela 2: Zmienne stanu - wartości bieżące
Tabela 3: Zmienne stanu - tablice wierzchołków część I
Tabela 4: Zmienne stanu - tablice wierzchołków część II
Tabela 5: Zmienne stanu - tablice wierzchołków część III
Tabela 6: Zmienne stanu - tablice wierzchołków część IV
Tabela 7: Zmienne stanu - tablice wierzchołków część V
Tabela 8: Zmienne stanu - tablice wierzchołków część VI
Tabela 9: Zmienne stanu - obiekty buforowe
Tabela 10: Zmienne stanu - przekształcenia część I
Tabela 11: Zmienne stanu - przekształcenia część II
Tabela 12: Zmienne stanu - mgła i cieniowanie
Tabela 13: Zmienne stanu - oświetlenie część I
Tabela 14: Zmienne stanu - oświetlenie część II
Tabela 15: Zmienne stanu - oświetlenie część III
Tabela 16: Zmienne stanu - rasteryzacja część I
Tabela 17: Zmienne stanu - rasteryzacja część II
Tabela 18: Zmienne stanu - rasteryzacja część III
Tabela 19: Zmienne stanu - wielopróbkowanie
Tabela 20: Zmienne stanu - tekstury część I
Tabela 21: Zmienne stanu - tekstury część II
Tabela 22: Zmienne stanu - tekstury czesc III
Tabela 23: Zmienne stanu - tekstury czesc IV
Tabela 24: Zmienne stanu - tekstury część V
Tabela 25: Zmienne stanu - tekstury część VI
Tabela 26: Zmienne stanu - srodowisko tekstur czesc I
Tabela 27: Zmienne stanu - srodowisko tekstur czesc II
Tabela 28: Zmienne stanu - środowisko tekstur część III
Tabela 29: Zmienne stanu - operacje na pikselach część I
Tabela 30: Zmienne stanu - operacje na pikselach część II
Tabela 31: Zmienne stanu - operacje na pikselach część III
Tabela 32: Zmienne stanu - bufor ramki czesc I
Tabela 33: Zmienne stanu - bufor ramki część II
Tabela 34: Zmienne stanu - piksele część I
Tabela 35: Zmienne stanu - piksele część II
Tabela 36: Zmienne stanu - piksele część III
Tabela 37: Zmienne stanu - piksele część IV
Tabela 38: Zmienne stanu - piksele część V
Tabela 39: Zmienne stanu - piksele część VI
Tabela 40: Zmienne stanu - piksele część VII
Tabela 41: Zmienne stanu - piksele część VIII
Tabela 42: Zmienne stanu - piksele część IX
Tabela 43: Zmienne stanu - ewaluatory część I
Tabela 44: Zmienne stanu - ewaluatory część II
Tabela 45: Zmienne stanu - obiekty programu cieniowania
Tabela 46: Zmienne stanu - obiekty programów cieniowania
Tabela 47: Zmienne stanu - programy cieniowania wierzchołków
Tabela 48: Zmienne stanu - wskazówki jakości renderingu
Tabela 49: Zmienne stanu zalezne od implementacji część I
Tabela 50: Zmienne stanu zalezne od implementacji część II
Tabela 51: Zmienne stanu zalezne od implementacji część III
Tabela 52: Zmienne stanu zależne od implementacji część IV
Tabela 53: Zmienne stanu zależne od implementacji część V
Tabela 54: Zmienne stanu zależne od implementacji część VI
Tabela 55: Pozostałe zmienne stanu
Program przykładowy
Tabele 49 - 54, przedstawiają zmienne stanu zależne od implementacji biblioteki OpenGL. Program przykładowy (plik implementacja opengl.cpp) pokazuje wartości wszystkich zmiennych stanu zależnych od implementacji, których obsługę zawiera bieżąca implementacja. Z uwagi na dużą ilość zmiennych program wyświetla je w trzech odrębnych oknach. Wyniki działania programu dla karty graficznej ATI Radeon X700 oraz biblioteki Mesa 3D w wersji 6.0 przedstawiono na rysunkach 1 - 6.
Plik implementacja_opengl.cpp
Uwaga! Plik implementacja_opengl.cpp do pobrania tutaj: TODO: adres |