【发布时间】:2012-11-07 14:46:54
【问题描述】:
我在 (0,0) 处有一辆汽车,并设置了一些障碍物,但现在我主要关心的是从 glPerspective 切换到 glOrtho,反之亦然。当我从透视切换到正射时,我得到的只是黑屏。
void myinit(){
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ww/wh,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-5,5,3,backcarx,topcarx,0,0,0,1);
}
void menu(int id){
/*menu selects if you want to view it in ortho or perspective*/
if(id == 1){
glClear(GL_DEPTH_BUFFER_BIT);
glViewport(0,0,ww,wh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2,100,-2,100,-1,1);
glMatrixMode(GL_MODELVIEW);
glutPostRedisplay();
}
if(id == 2){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ww/wh,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
viewx = backcarx - 10;
viewy = backcary - 10;
gluLookAt(viewx,viewy,viewz,backcarx,topcarx,0,0,0,1);
}
}
我已经尝试使用清除深度缓冲区,但仍然不起作用。
【问题讨论】:
-
有点离题,但您似乎正在使用固定功能管道。你最好切换到
Shaders和VertexBuffers以获得更好的性能和更好的帮助(我不能在这里帮助你,因为我不再使用ffp了)。 -
是切换问题,还是使用 Ortho 无法正确查看场景? (如果您使用正交而不是透视进行初始化,对象是否可见?)
-
是的,如果我将其设置为 Ortho,一切都会正常显示。它的开关就是问题
-
从正交变为透视很好,但反过来我无法让它工作
-
您是否尝试在 GlOrtho 分支中添加 gluLookAt 语句?
标签: c opengl glut projection orthographic