[opengl] przesuwanie sceny

0

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?

0

operuj kamera

0

pewnie nie masz rzutowania perspektywicznego

0

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

0

pewnie nie masz rzutowania perspektywicznego

jak to włączyć?

0

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 ;-)

0

ale jakie maja byc parametry?

0

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)

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1