現在地 >> メニュー >> 基本編04 >> 隠面消去(Zバッファ)

次 >> アニメーション

<隠面消去(Zバッファ)>


まとめコード::基本編03のプログラムはZバッファの設定を行っていない。

従って、複数の物体を描画した時、
本来は前にある物体によって見えなくなる後ろの物体が見えてしまう可能性がある。

関連>>Zバッファの有無による違いのサンプル

重なった物体は、奥にあるものが隠れないといけない。(隠面消去)

そこで、「Zバッファ」を設定する必要がある。

設定方法


(a).初期設定
  1. 「glutInitDisplayMode()」に「GLUT_DEPTH」を追加する。

― [例] ―
glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH);


(b).描画時
  1. 「Zバッファ」のクリア
  2. 「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バッファ」を有効にする
        ... ...
}

メモ


途中でZバッファを無効化したくなったら、
glDisable(GL_DEPTH_TEST);
と書けばよい。


次 >> アニメーション

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます