gpt4 book ai didi

opengl - 为什么 reshape 代码以 glMatrixMode(GL_MODELVIEW) 结尾?

转载 作者:行者123 更新时间:2023-12-04 06:40:58 24 4
gpt4 key购买 nike

在查看红皮书中的 reshape 示例时,我通常会发现如下内容:

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);
glMatrixMode(GL_MODELVIEW);

}

我了解调用 glMatrixMode(GL_PROJECTION);后跟 glLoadIdentity();重置投影矩阵,但我不明白为什么 glMatrixMode(GL_MODELVIEW)通常在 reshape 结束时调用。

在这个特殊的例子中 glFrustum影响投影矩阵,对吧?为什么是 GL_MODELVIEW后来打电话?如果最后一次调用 glMatrixMode(GL_MODELVIEW) 会有什么不同吗?被省略了吗?

最佳答案

您的大部分渲染代码都会影响 GL_MODELVIEW ,因为它会影响对象平移和相机位置。但是,调整大小的代码适用于 GL_PROJECTION .程序员可能在他的大部分代码中假设当前矩阵是模型 View 之一,当需要影响不同的矩阵时,他/她会更改矩阵,更新它,然后将目标更改回 GL_MODELVIEW所以其余的代码不会针对错误的矩阵。

通常,OpenGL 函数会影响当前目标的任何矩阵,这就是您更改矩阵的原因。

关于opengl - 为什么 reshape 代码以 glMatrixMode(GL_MODELVIEW) 结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241166/

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