Eğitmenim, projeksiyon matrisini etkilemek için birbirlerinin yerine kullanılabileceğini söylüyor. Tercihen, gluLookAt()
'un, 'görüş açısını tanımlayabilme yeteneğinden dolayı göreli basitliğinden' dolayı kullanıldığını iddia etmektedir. Bu doğru mu? Hem gluLookAt()
hem de glFrustum()
kod örneklerini gördüm ve programcıların bunları neden karıştırdığını merak ediyorum. Redbook arasında cube.c örnekte olduğu gibi gluLookAt() ve glFrustum() arasında bir fark var mı?
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 ve glFrustum çok farklı matrisler belirler (gluLookAt, _not_ genellikle projeksiyon matrisine uygulanır). Eğitmeninizin gluLookAt yerine gluPerspective hakkında konuşmuyor olduğundan emin misiniz? – Bahbar
Ana fark, glFrustum'un çekirdek OpenGL kütüphanesinin bir parçası olması ve gluLookAt'ın farklı bir parametre kümesi alan ve glFrustum'u çağırdığı yardımcı kütüphanenin bir parçasıdır. Kullandığınız OpenGL için fark yaratmaz; seçim kodlama tercihlerinden biridir. – AndrewS