私のゲームには、キューブで作られたMinecraftのような地形があります。ボクセルデータから頂点バッファーを生成し、さまざまなブロックの外観にテクスチャアトラスを使用します。
問題は、離れた立方体のテクスチャがテクスチャアトラス内の隣接するタイルで補間されることです。その結果、キューブ間に間違った色の線が表示されます(グラフィカルな欠陥を確認するには、以下のスクリーンショットをフルサイズで表示する必要がある場合があります)。
今のところ、これらの補間設定を使用しますが、すべての組み合わせを試しましたが、GL_NEAREST
ミップマッピングがなくてもより良い結果は得られません。
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
また、テクスチャ座標にオフセットを追加してタイルのわずかに小さい領域を選択しようとしましたが、不要な効果はカメラまでの距離に依存するため、問題を完全に解決することはできません。とにかく遠い距離でストライプが発生します。
このテクスチャのにじみをどのように解決できますか?テクスチャアトラスの使用は一般的な手法であるため、一般的なアプローチがあるかもしれません。悲しいことに、コメントで説明されているいくつかの理由により、異なるテクスチャやテクスチャ配列に変更することはできません。
GL_LINEAR
、同様の結果を与える線形補間を行うかGL_NEAREST
、ブロック間のストライプをもたらす最も近いピクセルを選択します。最後に言及したオプションは減少しますが、ピクセルの欠陥を排除しません。