Я установил формат с помощью:
QGLFormat format = QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer);
setFormat(format);
в конструкторе .
Затем в initializeGL Я установил глубину тестирования.
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 квада.
Тестирование глубины, однако, все еще не работает и показывает квады в порядке исполнения.