私のインストラクターは、投影行列に影響を与えるために交換可能に使用できると教えています。彼は、gluLookAt()
が好ましくは、視野角を規定するその能力に起因する「相対的な単純さ」のために使用されると主張している。これは本当ですか?私はgluLookAt()
とglFrustum()
の両方を使用したコード例を見てきました。なぜプログラマーがそれらを混ぜるのだろうと思います。レッドブックのcube.c例でgluLookAt()とglFrustum()に違いはありますか?
などが表示されます:
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);
}
ハム。 gluLookAtとglFrustumは非常に異なる行列を設定します(gluLookAtは一般に投影行列に適用されません)。インストラクターがgluLookAtの代わりにgluPerspectiveについて話していなかったと確信していますか? – Bahbar
主な違いは、glFrustumはコアOpenGLライブラリの一部であり、gluLookAtは異なるパラメータセットをとり、glFrustumを呼び出すヘルパーライブラリの一部です。あなたが使っているOpenGLと違いはありません。選択はコーディングの好みの1つです。 – AndrewS