Depthtest

depthtest.png

各ピクセルに対して、デプスバッファは視点からの距離を保存しています。
デプステストをもうけて、新しいフラグメントがデプステストに合格したら、
そのピクセルのデプスバッファの値はその新しい値に置き換えられます。

デプステストは普通、隠面消去に使用されます。
もし新しいピクセル候補(つまりフラグメント)が出て来たら、
以前描いたものよりも視点に近いものだけをデプステスト合格にする、というものです。
つまり

glDepthFunc(GL_LESS);

の状態になっているということです。
なのでデプスバッファをクリアするときは、一番視点から遠いとされる値ですべてのピクセルの値を置き換えることをします。

もし単純にオブジェクトが行列変換された後の値で奥行き関係正しく描画したいならば

glEnable(GL_DEPTH_TEST);

を書くだけです。それと毎フレームデプスバッファをクリアすることをお忘れなく
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

デプステストがON状態かどうか調べる方法

glIsEnabled(GL_DEPTH_TEST);//bool値が返ってくる

サポートサイト Wikidot.com