我一直在尝试在我的OpenGL应用程序中创建一个hud。环顾四周,似乎这样做的方法是使用正射投影,但到目前为止,我还没有能够正确渲染程序。发生的事情不是在我的显示器上渲染,而是在这里看到奇怪的图形故障:
如果我注释掉hud代码,那么一切都会完美呈现。
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
//Set up projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Using gluPerspective. It's pretty easy and looks nice.
gluPerspective(fov, aspect, zNear, zFar);
//Set up modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//3D rendering
glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,window_width,0,window_height); //left,right,bottom,top
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glBegin(GL_QUADS);
glVertex2f(50,50);
glVertex2f(50,100);
glVertex2f(100,100);
glVertex2f(100,50);
glEnd();
答案 0 :(得分:4)
完成HUD渲染后,需要重新启用深度写入
glDepthMask(GL_TRUE);
答案 1 :(得分:2)
在渲染HUD时清除缓冲区时,所有这些都是 到目前为止绘制的(您的3D场景)也将被清除。所以不要两次清除缓冲区。