透過オブジェクトの描画は意外と簡単です。
glEnable(GL_DEPTH_TEST); //Zバッファ有効化
glEnable(GL_BLEND); //ブレンド処理を行う
glDepthMask(GL_FALSE); //デプスバッファに書き込むのを禁止する
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //ブレンディング係数を選択を指定
/*---- オブジェクトの描画処理 ----*/
glDepthMask(GL_TRUE); //デプスバッファへの書き込みを可能にする
glDisable(GL_BLEND); //ブレンド処理停止
glDisable(GL_DEPTH_TEST);
上記のように、デプスバッファを有効にしたあとブレンド処理を行うように指定します。
デプスバッファへの書き込みを禁止した後、ブレンディングする色の値をどのように組み合わせるかを指定します。
つまり、ブレンド処理をすることで半透明なオブジェクトが表現できるということです。
結構使えます。
ただし、「視点に対して一番奥の物体から順に描画」というように描画しないと正しい結果が得られなかったと思います。
|