【发布时间】:2012-03-09 06:38:46
【问题描述】:
我设置格式:
QGLFormat format = QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer);
setFormat(format);
在构造函数中。
然后在 initializeGL 我设置 depthTesting on。
void VoxelEditor::initializeGL()
{
glClearDepth(2000.0); // Enables Clearing Of The Depth Buffer
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LESS); // The Type Of Depth Test To Do
glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations
}
在paintGL中我清除深度缓冲区。
void VoxelEditor::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw();
}
我记得它曾经使用较少的顶点,所以可能是我使用了太多的深度缓冲区来处理(?)。 我有 32*32*32 体素,大部分时间都绘制了一半,所以是 98304 个四边形。
但深度测试仍然不起作用,并按执行顺序显示四边形。
【问题讨论】:
-
不可能是 glClearDepth() 和 glDepthFunc 的组合负责。如果您尝试删除 glClearDepth() 怎么办?
-
我尝试将 glDepthRange 从 0 添加到 1,但这也不会改变任何东西:S
标签: qt opengl depth-testing