■ 課題 |
今回の課題は以下の通り。
赤、青、緑の3色で3枚のポリゴンを半透明化し、各々の一部を重ね、色が変化する様子が分かるプログラムを作ってください。
そして、ブレンディングの方程式を決定する関数を使って (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 及び、(GL_SRC_ALPHA, GL_ONE) 等に変更してその違いを確認してみて下さい。
キーボードの入力などでα値が変化するようにしてみてください。
テクスチャを貼ったポリゴンを半透明化していくつか重ねて効果を確認して下さい。
フォグを設定して効果を確認して下さい。
半透明を活かした楽しいデモを作って下さい。
|
■ 今回のヒント |
今回もテンプレートを用意しましたのでご利用下さい。
ブレンディングについて
OpenGLでは半透明な物体を描画するためにアルファブレンディングという手法を用いています。これは書き込もうとする画素(ソース)をそのアルファ値を使ってフレームバッファ内の画素(ターゲット)と混合するものです。アルファ値は色の指定の4番目の要素です。
ブレンディングの手順
まず最初に不透明な物体を描画する。そしてデプスバッファへの書き込みを禁止し、ブレンディングを有効にして半透明な物体を描画する。
|
/* ここで不透明な物体の描画 */
/* ブレンディングを有効にする */
glEnable( GL_BLEND );
/* デプスバッファへの書き込みを禁止する */
glDepthMask( GL_FALSE );
/* ブレンディングのための方程式を設定する */
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
/* マテリアルや色の指定でアルファ値を1.0より小さい値にします。*/
/* ここで半透明な物体の描画 */
/* デプスバッファーへの書き込みを許可する */
glDepthMask( GL_TRUE );
/* ブレンディングを無効にする */
glDisable( GL_BLEND );
|
|
フォグについて
glFog*()のGL_FOG_COLOR, GL_FOG_START, GL_FOG_END, GL_FOG_MODEなどを調べてください。
下記の関数について調べてみてください。
glEnable() / glDisable()
glDepthMask()
glBlendFunc()
glFog*()
|