デプスマスク

depthmask.png

glDepthMask(GL_TRUE);

デプス・バッファが書き込みのため有効化される。
デプスバッファを書き込み不能にすると、

  • 一連のフレームで背景を共通させたい場合
  • 背景の一部に隠れる部分を追加したい場合
  • 半透明物体を書く場合

に効果的。
例えば、背景が森で、同じ樹木のフレームを反復して描画し、その間でオブジェクトを移動させる場合、
デプスバッファで記録されたデプスで樹木を描画した後、樹木の画像は保存され、書き込み不能にしたデプスバッファを使用して新規の項目を描画する。
新規項目が相互に重なっていない限り、画像は正確である。
次のフレームを描画するときは、樹木の画像をリストアして続ける。
デプスバッファの値をリストアする必要はない。
このテクニックは、背景が極端に複雑な場合、あまりにも複雑であるために、ジオメトリから再計算するよりも、画像をカラーバッファに再コピーしたほうがずっと高速であるような場合に特に効果的。

注意

アルファブレンディングするときに

glDepthMask(GL_FALSE);

をした後、
glDepthMask(GL_TRUE);

をし忘れると、謎の変なプレートが出現するよ。

depth

サポートサイト Wikidot.com depth