Il mio istruttore dice che possono essere usati in modo intercambiabile per influenzare la matrice di proiezione. Egli sostiene che lo gluLookAt()
è preferibilmente utilizzato a causa della sua "semplicità relativa dovuta alla sua capacità di definire l'angolo di visione". È vero? Ho visto esempi di codice usando sia gluLookAt()
e glFrustum()
e mi chiedo perché il programma li mixerebbe.C'è una differenza tra gluLookAt() e glFrustum()?
Come nell'esempio cube.c del Redbook appare:
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);
}
ronzio. gluLookAt e glFrustum impostano matrici molto diverse (generalmente gluLookAt__not_ viene applicato alla matrice di proiezione). Sei sicuro che il tuo istruttore non stesse parlando di gluPerspective invece di gluLookAt? – Bahbar
La differenza principale è che glFrustum fa parte della libreria di base di OpenGL e gluLookAt fa parte di una libreria di helper che accetta un diverso set di parametri e quindi chiama glFrustum. Non fa differenza con OpenGL quale si usa; la scelta è una delle preferenze di codifica. – AndrewS