17

Trochę ciekawostek – na weekend (czego to ludzie nie wymyślą ...


Ustawianie trybu rysowania wielok±tów

OpenGL pozwala na zdefiniowanie sposobu rysowania wielok±tów tj. mo¿liwe jest aby jedna ze stron (np. trójk±ta) by³a rysowana jako wype³niona, a druga jako linie konturu itd... Do tego celu s³u¿y rozkaz glPolygonMode(); o sk³adni:

glPolygonMode(param1,param2);
gdzie:

param1 - okre¶la stronê wielok±ta dla której ustawiamy typ rysowania, mo¿e to byæ:

GL_FRONT - strona przednia
GL_BACK - strona tylnia
GL_FRONT_AND_BACK - jednocze¶nie strona tylnia i przednia

param2 - ustawiany typ rysowania, mo¿e to byæ:

GL_POINT - rysowanie tylko wierzcho³ków wielok±ta w postaci pojedynczych punktów
GL_LINE - rysowanie tylko konturów wielok±ta w postaci liñ
GL_FILL - rysowanie ca³ego, wype³nionego wielok±ta(WYMAGANE PRZY TEKSTUROWANIU)


UWAGA: W momencie gdy strona przednia i tylnia maj± ró¿ne sposoby rysowania tj. gdy jedna ze stron rysowana jest jako wype³niona, a druga jako linie lub punkty to konieczne jest zwiêkszenie dok³adno¶ci obliczeñ perspektywy, bo w przeciwnym razie otrzymamy na ekranie zniekszta³cony perspektywicznie obraz. Dlatego zwiêkszamy dok³adno¶æ obliczenia perspektywy przez zastosowanie rozkazu glHint(); jak poni¿ej:

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NEAREST );
Rozkaz glPolygonMode() mo¿na umie¶ciæ np. w procedurze inicjacji OpenGL np. InitGL() b±d¼ bezpo¶rednio przed definicj± danego wielok±ta.


Dlaczego OpenGL rozró¿nia stronê przedni± i tylni± wielok±ta?
Odpowied¼ jest bardzo prosta. Je¶li mamy np. kulê, to obracaj±c j± bêdziemy widzieæ jedynie jedn± stronê tych wielok±tów - przedni±. To w takim razie nie potrzebujemy strony tylniej - nie musimy jej rysowaæ(pozwala to zwiêkszenie wydajno¶ci renderowania).

[Patrz te¿: Backface culling]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • strefamiszcza.htw.pl
  • Copyright (c) 2009 TrochÄ™ ciekawostek – na weekend (czego to ludzie nie wymyÅ›lÄ… ... | Powered by Wordpress. Fresh News Theme by WooThemes - Premium Wordpress Themes.