フォーマットを設定します:
QGLFormat format = QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer);
setFormat(format);
コンストラクター内。
次に、initializeGLでdepthTestingをオンに設定します。
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();
}
以前はより少ない頂点で動作していたことを覚えているので、depthbufferが処理するには多すぎる頂点を使用している可能性があります(?)。私は32*32 * 32のボクセルを持っており、ほとんどの場合半分の時間で描画されるため、98304クワッドです。
ただし、深度テストはまだ機能せず、実行順にクワッドが表示されます。