Archiwum
- Index
- Brooks, Terry Word 02 A Knight of the Word
- John DeChancie Castle 02 Castle for Rent
- Jay D. Blakeny The Sword, the Ring, and the Chalice 02 The Ring
- Celmer Michelle Królewskie zwišzki 02 Ksišżę i sekretarka (Goršcy Romans 893)
- Margit Sandemo Cykl Saga o czarnoksiężniku (02) Blask twoich oczu
- 115. Sherryl Woods Bogaci kawalerowie 02 Randka z przeznaczeniem
- Diana Palmer Big Spur,Texas 02 Passion Flower
- Johanna Lindsey Viking Family Tree 02 Hearts Aflame
- Carroll_Jonathan_ _Vincent_Ettrich_TOM_02_ _Szklana_zupa
- Lore Pittacus Dziedzictwa planety Lorien Ksić™ga 1 Jestem Numerem Cztery
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- aeie.pev.pl
[ Pobierz całość w formacie PDF ]
poleceo OpenGL. Efektem będzie puste okno o kolorze tła określonym w poprzednio opisanej funkcji
szablonu.
//////////////////////////////////////////////////////////////////////
// funkcja generujÄ…ca scenÄ™ 3D
//////////////////////////////////////////////////////////////////////
void DisplayScene()
{
// czyszczenie bufora koloru
glClear( GL_COLOR_BUFFER_BIT );
// skierowanie poleceń do wykonania
glFlush();
}
Pierwsza z użytych funkcji:
void glClear( GLbitfield mask );
zawiera maskę bitową z wartościami wskazującymi, które bufory są czyszczone. Wartości te wynoszą:
GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT i wskazujÄ…
odpowiednio aktualnie aktywne do zapisu bufory koloru, bufor głębokości i bufor szablonu. Stałe te
mogą byd łączone za pomocą operatora |.
Druga funkcja:
void glFlush( void );
określa, że wszystkie polecenia OpenGL, które zostały wcześniej wywołane muszą zostad wykonane w
skooczonym czasie. Działanie to dobrze określa słowo wymiatanie będące bezpośrednim
tłumaczeniem angielskiej nazwy funkcji. Podobną rolę wykonuje polecenie
void glFinish( void );
które wymusza wykonanie wszystkich poprzednich poleceo OpenGL. W odróżnieniu od funkcji
glFlush, glFinish nie zakooczy się dopóki wszystkie efekty wcześniej wydanych poleceo dla
zmiennych stanu klienta i serwera OpenGL oraz bufora ramki nie zostaną w pełni zrealizowane.
Zmiana wielkości okna
Typowym zdarzeniem, które występuje w programach okienkowych jest zmiana rozmiaru
okna. W przypadku biblioteki OpenGL obsługa takiego zdarzenia wymaga nie tylko odrysowania
okna. Niezbędne jest także podjęcie decyzji o modyfikacji (lub nie) wielkości obszaru renderingu, czyli
przestrzeni okna wykorzystywanej przez OpenGL.
Obszar renderingu określa zastosowana w szablonie funkcja:
void glViewport( GLint x, GLint y, GLsizei width, GLsizei height );
której parametry oznaczają:
·ð x, y - współrzÄ™dne lewego dolnego narożnika obszaru renderingu wzglÄ™dem lewego dolnego
narożnika okna,
·ð width - szerokoÅ›d okna renderingu,
·ð height - wysokoÅ›d okna renderingu.
Początkowo obszar renderingu zajmuje całe okno udostępnione dla aplikacji OpenGL. W szablonie
programu glViewport określa za każdym razem obszar renderingu tak, aby obejmował on całe
okno.
//////////////////////////////////////////////////////////////////////
// zmiana wielkości okna
//////////////////////////////////////////////////////////////////////
void Reshape( int width, int height )
{
// obszar renderingu - całe okno
glViewport( 0, 0, width, height );
}
Wspomnijmy jeszcze, że parametry funkcji Reshape określają odpowiednio nową szerokośd
i wysokośd okna i są określane na podstawie danych przekazywanych przez system okienkowy.
Usunięcie elementów sceny 3D
Ostatnia funkcja szablnu jest odpowiedzialna za usunięcie elementów sceny OpenGL, które
nie zostały wcześniej zniszczone. W szczególności mogą to byd elementy tworzone w funkcji
InitScene. Ponieważ w szabolnie nie mamy takich elementów, wnętrze funkcji pozostaje puste.
//////////////////////////////////////////////////////////////////////
// usunięcie obiektów OpenGL
//////////////////////////////////////////////////////////////////////
void DeleteScene()
{
}
WyglÄ…d okna programu
Poniżej znajdują się zrzuty ekranu przedstawiające okna programu szablonu aplikacji OpenGL
w obu systemach operacyjnych wykorzystywanych w kursie.
Rysunek 1 Okno szablonu OpenGL (WIN32) Rysunek 2 Okno szablonu OpenGL (Linux)
[ Pobierz całość w formacie PDF ]