[ Pobierz całość w formacie PDF ]
.Stan GL_MAPl_x oraz GL_MAP2_x, koñce i podzia³ jedno-i dwuwymiarowej siatki,stan GL_AUTO_NORMAL.Stan GL_FOG, wartoœæ koloru mg³y, gêstoœci mg³y, pocz¹tku liniowej mg³y, koñcaliniowej mg³y, indeksu mg³y oraz zmiennej GL_FOG_MODE.StanGL_PERSPECTIVE_CORRECTION_HINT, GL_POINT_SMQOTH_HINT, GL_LINE_SMOOTH_HINT,GL POLYGON SMOOTH HINT oraz GL FOG HINT.GL CURRENT BITGL ENABLE BITGL_EVAL_BIT GL_FOG_BITGL HINT BIT464Czêœæ III » Tematy zaawansowane i efekty specjalneTabela 14.1.Bity atrybutów funkcji glPushAttrib - ci¹g dalszyBit atrybutuOpisGL LIGHTING BITStan GL_COLOR_MATERIAL.Wartoœæ GL_COLOR_MATERIAL_FACE.Parametry kolorumateria³u œledz¹ce kolor œwiat³a otaczaj¹cego sceny.WartoœciGL_LIGHT_MODEL_LOCAL_VIEWER oraz GL_L1GHT_MODEL_TWO_SIDE.Stany GLJJGHTING orazGL_LIGHTx.Wszystkie parametry œwiat³a.Wartoœæ GL_SHADE_MODE.Stany GL_LINE_SMOOTH oraz GL_LINE_STIPPLE.Deseñ przerywania linii oraz licznikpowtórzeñ.Szerokoœæ linii.Wartoœæ GL_LIST_BASE.Ustawienia GL_RED_BIAS, GL_RED_SCALE, GL_GREEN_BIAS, GL_GREEN_SCALE,GL_BLUE_BIAS, GL_BLUE_SCALE, GL_ALPHA_BIAS, GL_ALPHA_SCALE, GL_DEPTH_BIAS,GL_DEPTH_SCALE, GL_INDEX_OFFSET, GL_INDEX_SHIFT, GL_MAP_COLOR, GL_MAP_DEPTH,GL_ZOOM_X, GL_ZOOM_Y oraz GL_READ_BUFFER.Stan GL_POINT_SMOOTH, rozmiar punktu.GL_CULL_FACE, GL_CULL_FACE_MODE, GL_FRONT_FACE, GL_POLYGON_MODE,GL_POLYGON_SMOOTH, GL_POLYGON_STIPPLE.Obraz desenia dla wielok¹tów.Stan GL_SCISSOR_TEST, bry³a no¿yc.Stan GL_STENCIL_TEST.Funkcja szablonu i wartoœæ odniesienia.Maska wartoœciszablonu.Wartoœæ zerowania bufora szablonu oraz maska zapisu.Stan w³¹czenia dotycz¹cy wszystkich wspó³rzêdnych tekstur.Kolor ramki obrazutekstury.Filtr powiêkszania i pomniejszania.Wspó³rzêdne tekstur i trybypowtarzania tekstur.Kolor i tryb dla ka¿dego œrodowiska tekstury.UstawieniaGL_TEXTURE_GEN_x i GL_TEXTURE_GEN_MODE.Równania dla glTexGen.Wspó³czynniki szeœciu p³aszczyzn obcinania, stan w³¹czenia p³aszczyznobcinania.Ustawienie GL_MATRIX_MODE, stan GL_NORMALIZE.Zakres g³êbokoœci, pocz¹tek i rozci¹g³oœæ uk³adu wspó³rzêdnych.GL_LINE_BITGL_LIST_BITGL PIXEL MODÊ BITGL_POINT_BIT GL_POLYGON_BITGL_POLYGON_STIPPLE_BITGL_SCISSOR_B1T_BITGL_STENCIL_BUFFER_BITGL TEXTURE BITGL TRANSFORM BITGL YIEWPORT BITStan rysowaniaOpenGL posiada wiele zmiennych stanu zwi¹zanych z rysowaniem prymitywówwewn¹trz pary wywo³añ glBegin/glEnd.Wiêkszoœæ z nich jest zachowywanych wwyniku wywo³ania glPushAttrib(GL_CURRENT_BIT | GL_LINE_BIT); opisposzczególnych zmiennych tej grupy zawiera tabela 14.2.Rozdzia³ 14.» Maszyna stanu OpenGL______________________________465Tabela 14.2.Zmienne stanu rysowaniaZmienna stanu OpisGL_ALPHA_TEST Test wartoœci alfa.GL_BLEND Operacje mieszania kolorów pikseli.GL_CLIP_PLANEx Obcinanie prymitywów poza okreœlon¹ p³aszczyzn¹ obcinania.GL_CULL_FACE Usuwanie wielok¹tów zwróconych ty³em (lub przodem).GL_DITHER Roztrz¹sanie kolorów.GL_LINE_SMOOTH Antyaliasing linii.GL_LINE_STIPPLE Rysowanie linii przerywanych.GL_LOGIC_OP Operacje logiczne na rysowanych pikselach.GL_POINT_SMOOTH Antyaliasing punktów.GL_POLYGON_SMOOTH Antyaliasing wielok¹tów.GL_POLYGON_STIPPLE Deseñ na wielok¹tach.GL_SCISSOR_TEST Obcinanie rysunku poza regionem glScissor.Stan bufora g³êbokoœciNajczêstszym b³êdem pope³nianym przez pocz¹tkuj¹cych programistów OpenGL jestpominiêcie w³¹czenia testowania bufora g³êbokoœci wywo³aniemglEnable(GL_DE-PTH_TEST).Bez testowania bufora g³êbokoœci nie mog¹ byæ usuwaneniewidoczne powierzchnie (rozdzia³ 15).Do zachowania stanu testowania buforag³êbokoœci (zmienna GL_DEPTH_TEST) s³u¿y wywo³anie funkcji glPushAttrib zparametrem GL_DEP-TH_BUFFER_BIT.Stan bufora szablonuBufor szablonu s³u¿y do uzyskiwania wielu efektów specjalnych, na przyk³adcieni.Podobnie jak w przypadku bufora g³êbokoœci, mo¿na bardzo ³atwo sterowaæjego dzia³aniem.Aby zachowaæ stan bufora szablonu, wywo³aj funkcjêglPushAttrib(GL_STEN-CIL_BUFFERJ3IT).Odk³adana na stos zmienna stanu toGL_STENCIL_TEST.Stan oœwietleniaZe wszystkich zmiennych stanu OpenGL, zmienne zwi¹zane z oœwietleniem s¹najliczniejsze.Informacje o stanie oœwietlenia obejmuj¹ ustawienia bie¿¹cegotrybu koloru i œwiat³a dla œrodowiska oœwietlenia (modelu), definicjêmateria³u, kolor, po³o¿enie i kierunek Ÿróde³ œwiat³a, a tak¿e kilka innychparametrów.Co wiêcej, przy w³¹czonym466Czêœæ III » Tematy zaawansowane i efekty specjalneautomatycznym generowaniu normalnych, OpenGL wykorzystuje jeszcze dodatkowezmienne stanu oœwietlenia.Wszystkie dostêpne zmienne stanu oœwietlenia wymieniono w tabeli 14.3.Jakominimum, musisz wywo³aæ przynajmniej funkcje glEnable(GL_LIGHTING) orazglEna-ble(GL_LIGHTO).Aby zachowaæ bie¿¹cy stan oœwietlenia, wywo³aj funkcjêglPushAt-trib(GL_LIGHTING_BIT | GL_EVAL_BIT).Tabela 14.3.Zmienne stanu oœwietleniaZmienna stanuGL_AUTO_NORMAL GL_COLOR_MATERIALGLJJGHTING GL_LIGHTx GL_MAP1_NORMAL GL_MAP2_NORMAL GL NORMALIZEOpisAutomatyczne generowanie normalnych na podstawie parametrów funkcji glMap.Przypisywanie koloru materia³u na podstawie bie¿¹cego koloru rysowania.W³¹czanie obliczeñ zwi¹zanych z oœwietleniem.W³¹czenie Ÿród³a œwiat³a x.W³¹czenie odwzorowania normalnych na podstawie wspó³rzêdnych ID.W³¹czenie odwzorowania normalnych na podstawie wspó³rzêdnych 2D.Normalizowanie wszystkich normalnych przed wykonywaniem obliczeñ.Stan teksturowaniaJeœli chodzi o z³o¿onoœæ, teksturowanie niewiele ustêpuje oœwietleniu.Dostêpnezmienne stanu teksturowania zawiera tabela 14.4.Aby zachowaã bieýàce parametry teksturowania, wywoùaj funkcjæ glPushAttrib zparametrami GL_TEXTUR£_BIT oraz GL_EVAL_BIT.Gdy wùàczasz teksturowanie,pamiêtaj, aby w³¹czyæ tylko jeden z dwóch trybów - albo GL_TEXTURE_1D, alboGL_TEXTURE_2D.Specyfikacja OpenGL wymaga, aby teksturowanie 2D zastêpowa³oteksturowanie ID, ale niektóre implementacje nie spe³niaj¹ tego za³o¿enia.Tabela 14.4.Zmienne stanu teksturowaniaOpisZmienna stanuGL MAPI TEXTURE COORD lGL MAPI TEXTURE COORD 2W wyniku wywo³añ funkcji glEvalPointl, glEvalMeshl orazglEvalCoordl bêdziegenerowana wspó³rzêdna s tekstury.W wyniku wywo³añ funkcji glEvalPointl, glEvalMeshl oraz glEvalCoordl bêd¹generowane wspó³rzêdne s i t tekstury.467Rozdzia³ 14.» Maszyna stanu OpenGLTabela 14.4.Zmienne stanu teksturowania - ci¹g dalszyZmienna stanuGL_MAP1_TEXTURE_COORD_3 GL_MAP 1_TEXTURE_COORD_4 GL_MAP2_TEXTURE_COORD_1GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4GL_TEXTURE_1DGL_TEXTURE_2D GL_TEXTURE_GEN_QGL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL TEXTURE GEN TOpisW wyniku wywo³añ funkcji glEvalPointl, glEvalMeshl orazglEvalCoordl bêd¹generowane wspó³rzêdne s, t oraz r tekstury.W wyniku wywo³añ funkcji glEvalPointl, glEvalMeshl orazglEvalCoordl bêd¹generowane wspó³rzêdne s, t, r oraz q tekstury.W wyniku wywo³añ funkcji glEvalPoint2, glEvalMesh2 oraz glEvalCoord2 bêdziegenerowana wspó³rzêdna s tekstury.W wyniku wywo³añ funkcji glEvalPoint2, g!Eva!Mesh2 oraz glEvalCoord2 bêd¹generowane wspó³rzêdne s i t tekstury.W wyniku wywo³añ funkcji glEvalPoint2, glEvalMesh2 oraz glEvalCoord2 bêd¹generowane wspó³rzêdne s, t oraz r tekstury.W wyniku wywo³añ funkcji glEvalPoint2, glEvalMesh2 oraz glEvalCoord2 bêd¹generowane wspó³rzêdne s, t, r oraz q tekstury.W³¹czenie teksturowania ID, chyba ¿e zostanie w³¹czone teksturowanie 2D.W³¹czenie teksturowania 2D.Przy wywo³aniach funkcji glVertex automatyczne generowanie wspó³rzêdnej qtekstury.Przy wywo³aniach funkcji glVertex automatyczne generowanie wspó³rzêdnej rtekstury
[ Pobierz całość w formacie PDF ]