我正在尝试使用 openGL 制作一个简单的绘图。但是,深度缓冲区似乎没有工作。
其他有类似问题的人通常会做以下两件事之一:
不包括 glEnable(GL_DEPTH_TEST)
错误的剪裁值
但是,我的代码没有这些问题。
...
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
gluPerspective(25.0,1.0,10.0,200.0);
// Set the camera location
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(20.0, 10.0, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Cull backfacing polygons
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE)
drawCoordinateAxis();
drawBox(5.0,2.0,5.0,0.8,0.0,0.0);
glTranslated(1.0,-1.0,1.0); //The box is 5x2x5, it is shifted 1 unit down and 1 in the x and z directions
drawBox(5.0,2.0,5.0,0.0,1.0,1.0);
...
当我执行我的代码时,这是绘制的。 http://imgur.com/G9y41O1
注意蓝色盒子和红色盒子碰撞,所以红色盒子应该覆盖蓝色盒子的一部分。
函数 drawCoordinateAxis() 和 drawBox() 只是绘制了一些图元,内部没有什么花哨的。
我在 Debian 挤压上运行它。