我浏览了一些在这里发布的问题,但仍然无法理解为什么我的2D HUD出现后会使我的3D渲染世界消失。
编辑:似乎2D场景控制了整个屏幕,所以偶尔我可以看到3D场景穿过2D场景出现故障。即使它只需要渲染一个10x10像素的四边形,它也会将其渲染出来,然后将其余部分变成空白。
编辑:似乎2D场景控制了整个屏幕,所以偶尔我可以看到3D场景穿过2D场景出现故障。即使它只需要渲染一个10x10像素的四边形,它也会将其渲染出来,然后将其余部分变成空白。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.5,20.0);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,x,y);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0,-0.5,-6.0);
glPushMatrix();
..Draw some 3d stuff...
glPopMatrix();
// Start 2d
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0f, 255.0f, 1.0f);
glBegin(GL_QUADS);
glVertex2f(0.0, 0.0);
glVertex2f(10.0, 0.0);
glVertex2f(10.0, 10.0);
glVertex2f(0.0, 10.0);
glEnd();
然后我交换缓冲区。
这是我的代码顺序。它先创建3D空间,然后创建2D空间,最终消除了3D空间。
SCREEN_WIDTH
和glViewport
中使用的x
有什么区别?如果您注释掉最后六行,但保留2D设置,3D渲染是否仍会消失?您能否将其缩小到干扰3D部分的一行或命令? - Ben VoigtglMatrixMode(GL_PROJECTION);
,3D渲染就会显示。 - Elgoog