0

私は次のような状況にあります。

私のゲームでは、IOS または Android デバイスの openGL ES 1.2 でテクスチャ アトラスからタイルマップをレンダリングしています。

テクスチャ アトラスには、各サブ テクスチャ間に 2 ピクセルのパディングがあります。パディングカラーはブラック、クリアカラーです。

私の目標は、できるだけ多くの異なる画面解像度をサポートすることです。私のゲームがスケーリングされていない画面解像度をサポートしていない場合、フォールバック戦略としてスケーリングを使用して、任意の画面解像度をサポートしたいと考えています。

スケールなしでレンダリングしている限り (モデル マトリックスでスケール = 1.0)、タイルマップは完璧に見えます。また、タイルマップをグリッチなしで非常にスムーズにスクロールできます。

タイルマップをスケーリングしてレンダリングするとすぐに、タイルマップがスクロールしているときに、タイル間に黒いストライプが表示されます (テクスチャ アトラスのサブテクスチャ間の塗りつぶし色として黒色のクリア カラーが使用されます)。

何らかの理由で、スケーリングされたレンダリング中にサブ テクスチャに指定されたテクスチャ座標が何らかの理由で超えられ、塗りつぶしの色が部分的に使用されているようです。

この問題を回避するための可能な戦略を見つけようとしています。これまでに2つの解決策が頭に浮かびました:

1) テクスチャ座標を変更します。x と y に半ピクセルを加算し、幅と高さから完全なピクセルを減算します。これは機能しますが、レンダリングされたタイルは不鮮明です。

2) 整数位置でのみタイルマップを移動します。動作しますが、スクロールがぎこちなく見えます。

3) テクスチャ アトラスを変更し、すべての境界ピクセルを複製して、各サブテクスチャを各方向に 1 ピクセルずつ拡張します。これはまだ試していません。テクスチャ パッキング ツールを変更する前に、これが機能するかどうかを確認したかったのです。(この戦略について何か読んだ気がしますが、もう記事が見つかりません)

誰もこの問題の経験があり、正しい方向に私を向けることができますか?

4

0 に答える 0