jon*_*ham 1 c++ opengl perspective glu
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();
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但有没有办法删除对gluPerspective的调用?
我的意思是,我想在初始化时只调用一次,而不是在每次渲染期间重复调用.
你在那里打电话给gluPerspective,因为它属于那里.OpenGL不是初始化事物的场景图.这是一个状态驱动的绘图API.投影矩阵是一种状态,并且每个严肃的图形应用程序在单个帧渲染中多次改变该状态.
OpenGL不了解几何对象,位置和相机.它只是通过处理管道推动点,线和三角形,并将结果绘制到屏幕上.在绘制了一些东西之后,无论如何,OpenGL都没有回忆它.
我的意思是在初始化时只调用一次.
OpenGL没有初始化(除了创建渲染上下文,但实际上这是操作系统的图形堆栈的一部分,而不是OpenGL).当然,你上传纹理和缓冲对象数据,但这可能随时发生.
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |