0

個々のスプライトをいくつかまとめて、Zwoptex で 2048*2048 サイズの大きなスプライト シートを生成しました。ただし、iPad HD の場合は 2048*2048、iPhone の場合は 512*512 など、各 iOS デバイスに合わせて縮小しています。

Zwoptex の「Spacing Pixel」オプションが、デバイスでのスプライト レンダリングの結果に影響することがわかりました。この値は、スプライト シート内に詰め込まれた個々のスプライト間のスペース (ピクセル単位) を意味します。たとえば、その値を低く設定しすぎると、古いデバイスだけでなく、新しいデバイスやより優れたデバイスでもピクセルのにじみが発生する可能性が高くなります。しかし、その値を大きくすると、可能性が低くなり、特定の値が十分に高い場合、ピクセルのにじみは (うまくいけば) 発生しません。

とにかく、値を約 17 ~ 20 に設定しました。これは非常に高く、スプライト シートの貴重なスペースを消費します。その結果、iPhone シミュレーターにはまだ問題があります。

一部のデバイスで特定の iOS バージョンのゲームのインストールを制限することしかできませんが、iPhone 3GS は引き続き最新バージョンにアップデートできるため、この問題を解決する必要があります。

そこで、iPhone から iPad (Retina を含む) までのすべての iOS デバイスでピクセル ブリーディングの問題が発生しないようにする方法についての解決策を知りたいと思います。レンダリング時に問題を取り除くために、スプライト間の「ピクセルの間隔」に特定の値を選択する際のベスト プラクティスまたは実用的な解決策を知っておくとよいでしょう。

4

1 に答える 1

2

シミュレーターだけがこれらのアーティファクトを表示する場合は、絶対に無視してください。シミュレーターでアプリを実行するユーザーはいませんよね? シミュレーターは完璧ではありません。

各テクスチャ アトラス スプライト フレームの周囲に 2 ピクセルの間隔があれば、ピクセルのにじみによるすべてのアーティファクトをなくすことができます (一般的に推奨されます)。それでもアーティファクトが表示される場合は、間隔が狭すぎることが直接の原因ではありません。彼らはできません。

Zwoptex についてはよくわかりませんが、テクスチャ アトラスの各縮小版​​を手動で作成する必要がありますか? あなたはそこで何か間違ったことをしているかもしれません。TexturePackerを試してみてください。アーティファクトがそのまま消えても驚かないでしょう。

たとえば、アーティファクトの 1 つのタイプは、オブジェクトを整数の位置に配置しないことによって発生します。2 つのオブジェクトの位置が (1.23545, 10.0) と (41.23545, 10.0) のような場合、2 つのオブジェクト間にギャップ (通常は黒い線) が表示されることがあります。整数座標 (1,10) と (41,10) を使用すると、問題が解決します。問題は、これが階層をずっと上に行くことです。これらのオブジェクトの親ノードも整数以外の位置にある場合、このライン ギャップ アーティファクトが引き続き発生する可能性があります。

検索すると、cocos2d アーティファクトの因果関係に関する議論が多数見つかります。CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL マクロを使用しないでください。それは修正ではなく、近づくことさえありません。非整数位置アーティファクトをちょっと修正し、別の(さらに悪いIMHO)を導入します:移動中のエイリアシング/ちらつき。

于 2013-02-22T12:49:59.410 に答える