裏面を表示させたくない、あるいは裏面だけを表示したい場合、カリングという機能を使います。
// カリングを有効化、表か裏しか描画されなくなる
gl.glEnable(GL10.GL_CULL_FACE);
// 両面描画するよう戻すときは、カリングを無効化します。
gl.glDisable(GL10.GL_CULL_FACE);
描画しない面を指定するときは、glCullFaceを使います。
// 表面のみ描画
gl.glCullFace(GL10.GL_BACK);
// 裏面のみ描画
gl.glCullFace(GL10.GL_FRONT);
glCullFaceのパラメータは「描画しない面」であることに注意してください。
応用例として、くるくる回るトランプを考えます。
テクスチャとして、トランプの表と裏、それぞれの画像を用意しておきましょう。
onSurfaceChangedなどで、カリングを有効化しておきます。
// カリングを有効化、表か裏しか描画されなくなる
gl.glEnable(GL10.GL_CULL_FACE);
onDrawFrameでトランプを描画するとき、表と裏それぞれの画像を同じ座標、同じ大きさで描画します。その時に、glCullFaceでどちらの面を表示するか指定します。
// 表面のみ描画
gl.glCullFace(GL10.GL_BACK);
トランプの表画像を描画する
// 裏面のみ描画
gl.glCullFace(GL10.GL_FRONT);
トランプの裏画像を描画する
これで、トランプをくるくる回転させると、表が見えているときは表の画像、裏が見えているときは裏の画像が表示されるようになります。
0 件のコメント:
コメントを投稿