gpt4 book ai didi

c++ - 如何只使用一次 gluPerspective?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:29 28 4
gpt4 key购买 nike

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

//set viewpoint
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(VIEW_ANGLE,Screen_Ratio,NEAR_CLIP,FAR_CLIP);
gluLookAt(0,5,5, 0,0,0, 0,1,0);

//transform model 1
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(Theta, 0,1,0);

//draw model 1
glBegin(GL_QUADS);
...
glEnd();

上面的代码工作正常,但是有什么方法可以删除对 gluPerspective 的调用吗?

我的意思是,我想在初始化时只调用一次,而不是在每次渲染时重复调用。

最佳答案

你在那里调用 gluPerspective,因为它属于那里。 OpenGL 不是您初始化事物的场景图。它是一个状态驱动的绘图 API。投影矩阵是一种状态,每个严肃的图形应用程序都会在单帧渲染中多次更改此状态。

OpenGL 不知道几何对象、位置和相机。它只是通过处理管道推送点、线和三角形,并将结果绘制到屏幕上。绘制完某些内容后,OpenGL 不会再记忆起它。

I mean calling it only once in initialization.

OpenGL 未初始化(渲染上下文的创建除外,但实际上这是操作系统图形堆栈的一部分,而不是 OpenGL)。当然,您可以向它上传纹理和缓冲对象数据,但这随时可能发生。

关于c++ - 如何只使用一次 gluPerspective?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222559/

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