テクスチャの合成
テクスチャとポリゴンのブレンド
描画用のテクスチャに色情報があるのと同じように、ポリゴンにも色情報があります。そこで考える必要があるのは、二つの色情報をどう使うかということです。
今までの例は、ポリゴンの色情報を使わずに、テクスチャの色情報だけを使うというデフォルトの設定で描画していました。
今回は色がきついこの画像を使います。角と文字「Toolkit」を透明にしています。
設定で大きく変わります
テクスチャの透明部分がポリゴンの色に
ソースコードは、大きく変わりません。テクスチャの色をTomato(マイルドな赤)にしました。
//テクスチャの合成の設定 GL.TexEnv(TextureEnvTarget.TextureEnv, TextureEnvParameter.TextureEnvMode, (int)TextureEnvMode.Modulate); GL.TexEnv(TextureEnvTarget.TextureEnv, TextureEnvParameter.TextureEnvColor, Color4.Blue);
テクスチャの合成を設定するには、TexEnvで上のように指定します。(TexEnv自体はいろいろな用途で使うようです)
TexEnvの引数の2番目にTextureEnvModeを指定した場合は、3番目に合成の方法、TextureEnvColorを指定した場合は、3番目に(合成によっては必要な)色の指定を記述します。
下が、TextureEnvModeの一覧です。
- Add
- 加算合成
- 計算式:
- Blend
- 指定した色と合成し、ポリゴン色と合成 ※TextureEnvColorで指定した色が使われます
- 計算式:
- Decal
- シールのように貼りつける
- 計算式:
- Modulate
- 乗算合成
- 計算式:
- Replace
- テクスチャで置き換え
- 計算式:
- Combine
- ※もっと柔軟に設定したい場合に指定 設定項目が多くて長くなるので、ここでは説明しません
Cp:ポリゴン色 Cs:テクスチャ色 Cc:指定色 As:テクスチャα値
それぞれの合成の結果は下のようになります。ポリゴンの角がオレンジのものは、ポリゴンの色(Tomato)がそのまま見えているということです。