最終更新: mikk_ni3_92 2008年07月16日(水) 18:29:05履歴
現在地 >> メニュー >> 基本編04 >> 隠面消去(Zバッファ)
次 >> アニメーション
まとめコード::基本編03のプログラムはZバッファの設定を行っていない。
従って、複数の物体を描画した時、
本来は前にある物体によって見えなくなる後ろの物体が見えてしまう可能性がある。
→ 関連>>Zバッファの有無による違いのサンプル
重なった物体は、奥にあるものが隠れないといけない。(隠面消去)
そこで、「Zバッファ」を設定する必要がある。
(a).初期設定
― [例] ―
glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH);
(b).描画時
― [例] ー
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Zバッファのクリア
... ...
glEnable(GL_DEPTH_TEST); //「Zバッファ」を有効にする
[ 使用例 ]
次 >> アニメーション
まとめコード::基本編03のプログラムはZバッファの設定を行っていない。
従って、複数の物体を描画した時、
本来は前にある物体によって見えなくなる後ろの物体が見えてしまう可能性がある。
→ 関連>>Zバッファの有無による違いのサンプル
重なった物体は、奥にあるものが隠れないといけない。(隠面消去)
そこで、「Zバッファ」を設定する必要がある。
(a).初期設定
- 「glutInitDisplayMode()」に「GLUT_DEPTH」を追加する。
― [例] ―
glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH);
(b).描画時
- 「Zバッファ」のクリア
- 「Zバッファ」を有効にする。
― [例] ー
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Zバッファのクリア
... ...
glEnable(GL_DEPTH_TEST); //「Zバッファ」を有効にする
[ 使用例 ]
void display() { ... ... glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //「Zバッファクリア」 ... ... glEnable(GL_DEPTH_TEST); //「Zバッファ」を有効にする /** [物体の描画] **/ /** [物体の描画] **/ ... ... glutSwapBuffers(); //ウィンドウに出力 } int main(...) { ... ... glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);//「Zバッファ」を有効にする ... ... }