サンプル13


  今回は、ポリゴンの透明度についてです。


目次

どうやって透明を表現するか

  透明なポリゴンを表現する一番簡単な方法は、後ろが透けて見えるようにすることです。もちろん、光の屈折なども考慮すればリアルな透明ポリゴンを描けますが、そんなことをしていたら到底リアルタイム表示などできません。(少くとも現在は)
  というわけで、透明=後ろが透けて見える、ということのみに話を絞ります。今度は、後ろが透けて見えるようにするには、どうするかということになります。これは簡単で、描くポリゴンの色と、背景の色を合成してやれば背景が透けて見えます。


Alpha値

  上のような処理をするときに、Alpha値というものがでてきます。これは、色の合成をするときに、どのくらいの割合で色を混ぜ合わせるかという値です。上の話を逆にたどれば、透明度と考えてもいいでしょう。
  ちなみに、OpenGLの仕様を見ていると、RGBA形式で指定などとありますが、色のRGBA形式というのは、赤:緑:青:Alpha値の4値で色を示す形式です。


サンプルプログラム

  そうしたら、サンプルプログラムを見てみます。まず、main()関数の中からです。

glEnable(GL_BLEND)

  色の合成を行うようにします。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
  色をどのように合成するか示します。SRC_ALPHAは描こうとするポリゴンのAlpha値のことです。関数の1つ目の引数は、描こうとするポリゴンの色の割合で、2つ目の引数が背景の色の割合になります。この場合、(描こうとするポリゴンの色:背景の色)=(描こうとするポリゴンのAlpha値:1─描こうとするポリゴンのAlpha値)となります。すなわち、Alpha値が0のときに透明、Alpha値が1のときに不透明になります。


  それから、display_func()の方では、glColor4f()を使っています。予想がつくと思いますが、4つめはAlpha値です。


戻る