gpt4 book ai didi

opengl - gluLookAt() 和 glFrustum() 之间有区别吗?

转载 作者:行者123 更新时间:2023-12-04 02:00:42 24 4
gpt4 key购买 nike

我的老师说它们可以互换使用来影响投影矩阵。他认为 gluLookAt()之所以优选使用,是因为它“由于能够定义视角而相对简单”。这是真的?我见过同时使用 gluLookAt() 的代码示例和 glFrustum()我想知道为什么程序员会混合它们。

就像在红皮书的cube.c例子中出现的一样:

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);
}

最佳答案

两者 glFrustumgluLookAt执行简单的矩阵乘法。检查这些矩阵的方程的手册页:

gluLookAt

glFrustum

这两个都可以用 glMultMatrix* 代替称呼。

最重要的区别是glFrustum大部分时间用于建立透视投影矩阵(由 gluPerspective 内部使用),以及 gluLookAt是一种用于指定模型 View 矩阵的便捷方法(通常:实现相机)。

关于opengl - gluLookAt() 和 glFrustum() 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com