#region OpenTK

OpenTKがGitHubで更新されるようになりました。NuGetから手に入れることができるようになりました。
現在は.NET Coreに対応する機運があるようです。

テクスチャの合成

テクスチャとポリゴンのブレンド

描画用のテクスチャに色情報があるのと同じように、ポリゴンにも色情報があります。そこで考える必要があるのは、二つの色情報をどう使うかということです。

今までの例は、ポリゴンの色情報を使わずに、テクスチャの色情報だけを使うというデフォルトの設定で描画していました。

今回は色がきついこの画像を使います。角と文字「Toolkit」を透明にしています。

Texture

設定で大きく変わります

TextureBlending
テクスチャの透明部分がポリゴンの色に

ソースコードは、大きく変わりません。テクスチャの色を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
加算合成
計算式:Color=Cp+Cs
Blend
指定した色と合成し、ポリゴン色と合成 ※TextureEnvColorで指定した色が使われます
計算式:Color=Cp1-Cs+CcCs
Decal
シールのように貼りつける
計算式:Color=Cp1-As+CsAs
Modulate
乗算合成
計算式:Color=CpCs
Replace
テクスチャで置き換え
計算式:Color=Cs
Combine
※もっと柔軟に設定したい場合に指定 設定項目が多くて長くなるので、ここでは説明しません

Cp:ポリゴン色 Cs:テクスチャ色 Cc:指定色 As:テクスチャα値

それぞれの合成の結果は下のようになります。ポリゴンの角がオレンジのものは、ポリゴンの色(Tomato)がそのまま見えているということです。

TextureBlending1TextureBlending2TextureBlending3TextureBlending4TextureBlending5

記事

外部リンク

Thanks