Hola a todos!!
Estoy teniendo problemas con el tema de la camara y del gluLookAt.
En principio mi problema es que:
Cuando inicio opengl, lo hago así:
GLfloat ratio;
ratio = ( GLfloat )SCREEN_WIDTH / ( GLfloat )SCREEN_HEIGHT;
glViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
glMatrixMode( GL_PROJECTION );
glLoadIdentity( );
glFrustum(0.0f, 800.0f, 600.f, 0.0f, 1.0f, 60.0f);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity( );
Ahora bien, despues de probar y probar y buscar, no puede hacer que el gluLookAt realizara algun cambio sobre mi escena inicial. Probe cambiando todos los valores, de a 1 y también todos juntos, de a poco y no encontre cambios.
Decidi usar gluPerspective cambiando la linea del glFrustum... a:
gluPerspective( 45.0f, ratio, 1.0f, 100.0f );
Con el cual me surgen 2 errores.
1).- La vista cambio, y se esta viendo completamente mal.
Que quiero decir con que cambio y se ve mal.
Los cubos que creo, los hago así:
glBegin(GL_QUADS);
// Front Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f);// Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f);// Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f, 15.0f, 0.0f);// Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f, 15.0f, 0.0f);// Top Left Of The Texture and Quad
// Back Face
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f, 15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f, 15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
// Top Face
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f, 15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f, 15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f, 15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f, 15.0f, 0.0f); // Top Right Of The Texture and Quad
// Bottom Face
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
// Right face
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f, 15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f, 15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
// Left Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f, 15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f, 15.0f, 0.0f); // Top Left Of The Texture and Quad
glEnd();
Primero creo los cubos y despues los muevo a la posicion correcta.
Ahora bien, con frustum este cubo y su translate correspondiente se ve perfecto, pero cuando pongo perspective tengo que hacer que el Z de cada cubo sea por lo menos de -45.0 (contra -1.0 que uso con frustum) para que se vea decente (ni siquiera bien).
2).- El gluLookAt tampoco realiza ningun cambio sobre la escena con perspective.
Al igual que con frustum y con casi las mismas pruebas.
En fin, esos son mis 2 problemas comenzando con mayor importancia el problema con la perspective.
Búsque en google, en este foro y demas y no pude encontrar la solucion a mi problema.
Si alguno me puede ayudar se lo voy a agradecer.
Desde ya muchas gracias.
Salu2
Juan Pablo