Mi instructor dice que se pueden usar indistintamente para afectar la matriz de proyección. Sostiene que se usa preferiblemente gluLookAt()
debido a su "simplicidad relativa debido a su capacidad para definir el ángulo de visión". ¿Es esto cierto? He visto ejemplos de código usando gluLookAt()
y glFrustum()
y me pregunto por qué los mezclaría el programador.¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
como en el ejemplo cube.c de la redbook aparece:
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
**//why isn't this a call to glFrustum?**
glScalef(1.0, 2.0, 1.0);
glutWireCube(1.0);
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
//why isn't this a call a call to gluLookAt()?
glMatrixMode(GL_MODELVIEW);
}
hum. gluLookAt y glFrustum configuran matrices muy diferentes (gluLookAt does _not_ normalmente no se aplica a la matriz de proyección). ¿Estás seguro de que tu instructor no estaba hablando de gluPerspective en lugar de gluLookAt? – Bahbar
La diferencia principal es que glFrustum es parte de la biblioteca principal OpenGL y gluLookAt forma parte de una biblioteca auxiliar que toma un conjunto diferente de parámetros y luego llama a glFrustum. No hace ninguna diferencia para OpenGL cuál utilizas; la elección es una de preferencia de codificación. – AndrewS