Jak można przesuwać scenę? Gdy korzystam z glTranslate, przesuwa się układ współrzędnych, ale obiekt jest nadal oddalony, miat się przybliżyć i tym samym powiększyć. Jedyne co się zmienia, to że najpierw widzę ścianę przednią (np. kostki), a po przybliżeniu widzę ją od wewnątrz ścianę tylną. Wszystko ok, tylko kostka powinna się przybliżyć czyli powiększyć, prawda?
operuj kamera
pewnie nie masz rzutowania perspektywicznego
zwroc uwage przede wszystkim na kolejnosc wykonywania dzialan. ja tez mam z tym jeszcze problemy, ale to kwestia przywykniecia. czesto kombinuje i przerzucajac linijki kodu nizej lub wyzej sprawdzam jakie to odnosi skutki i czy sa one zgodne z moimi oczekiwaniami
pewnie nie masz rzutowania perspektywicznego
jak to włączyć?
za pomoca funkcji glFrustum, albo gluPerspective lub tez gluLookAt. u mnie jednak pomimo tego cos jest nie tak i wszystko wyswietla sie w ortho, ale z tym dojde jakos do ladu sam ;-)
ale jakie maja byc parametry?
ale po co meczyc kamere?
jak juz wspomnial raybones wszystko zalezy od kolejnosci wykonywania.
jeli przesuwasz sobie na poczatku o jakies tam wartsci a potem dajesz przesuniecie -20 wglab i dopiero rysujesz to zawsze bedzie takie oddalenie.
wystarczy troche pokombinowac.
sprobuj ew. zaraz po narysowaniu cofnac to przesuniecie.
(jesli dales -20 to teraz daj +20 :P)
Ja to mam tak:
void COpenGLWindow::ReSizeOpenGL( DWORD dwWidth, DWORD dwHeight )
{
guard( COpenGLWindow::ReSizeOpenGL() )
if( dwHeight == 0 )
dwHeight = 1;
glViewport( 0, 0, (GLsizei)(dwWidth), (GLsizei)(dwHeight) );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0f, (float)dwWidth/(float)dwHeight, 0.1f, 100.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
unguard;
}
Funkcja ta jest wykonywana na początku programu a także w momencie gdy nastąpiła zmiana rozmiarów okna.