#region OpenTK

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

テクスチャパラメータ

テクスチャの表示のしかたを設定

テクスチャの設定にも、いろいろな種類があります。

これを上手く用いることで、テクスチャを効率よく、見栄えよく使うことができるでしょう。

その場に合った設定を

TextureParameter
なめらかな色

ソースコードは、設定の変更箇所が多くなっています。

			//テクスチャの設定
			GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureBorderColor, new[] { 0.0f, 0.0f, 0.0f, 1.0f });
			GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Clamp);
			GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Clamp);
			GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
			GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);

テクスチャの設定をするためには、TexParameter関数を用います。最初に適応するテクスチャの種類、次に適応するテクスチャの設定項目、最後にその値を記述します。値はint型かfloat型、その配列に変換します。

TextureBorderColorはそのままで、テクスチャの境界色の色を設定します。

TextureWrap?は、テクスチャ画像の?軸ではみ出た場合にどうするかの指定です。下はこの値の列挙型の一覧です。

Clamp
テクスチャの外周の色を使用(Linearの境界色の影響を受ける?)
ClampToEdge
テクスチャの外周の色を使用
ClampToBorder
テクスチャの境界色を使用
Repeat
テクスチャの繰り返し
MirroredRepeat
テクスチャの繰り返し 境界で鏡のように反転

TextureMinFilter,TextureMagFilterは、テクスチャの拡大時と縮小時の設定で、必ず設定しておかなければいけません。下は今の時点で使う列挙型の一覧です(値自体は多い)。

Nearest
一番近いテクスチャのピクセルをそのまま採用
Linear
付近のテクスチャのピクセルから線形補間

設定項目自体は他にもたくさんありますが、簡単なプログラムで実際に使うようなものはこれくらいでしょう。

それぞれの描画結果

ClampToEdgeClampToBorder RepeatMirroredRepeat LinearTextureBorderColor

Linear以外はすべてNearestで描画しています。ちなみに、一番上の大きな画像は、LinearでMirroredRepeatで描画したものです。

私の環境では、ClampとClampToEdgeの違いがわりませんでした…

LinearRepeat

Linearを使う場合の注意として、上の画像ではテクスチャの端と端が合成されるために緑が黒の部分ににじみ出てしまう、という事象があります。

Linearはテクスチャを(見た目は)きれいにしてくれますが、にじむことは忘れないでください。

記事

外部リンク

Thanks