2013-06-05 27 views
6

私はAndEngineとOpenGL ES 2.0を使用しています。私はGL_MAX_TEXTURE_SIZEについて読むことを続け、1024x1024の下に私のtexuresをいかに保つべきですか。私は誤って使い始めました。そして、TMX拡張でタイルセットを使用している間(あなたがAndEngineを知らないなら、それは本当に問題ではありません)、テクスチャを1024pxより広くするようにします。私はタイルセットを2つに分割し、それらを「安全」にすることを考えています。しかし、この制限が2048x2048未満に設定されている、過去数年間にリリースされたデバイスは見つかりません。 GL_MAX_TEXTURE_SIZEでデバイスをフィルタリングするために使用できるリストやウェブサイトはありますか? AndroidデバイスGL_MAX_TEXTURE_SIZE制限、安全なテクスチャサイズ


は、私は、次の質問をお読みください。

And I used this site to search for devices.しかし、私は、検索が面倒になりGL_MAX_TEXTURE_SIZEによって/フィルタで検索することはできません。私は間違って始めたので主に尋ねています。それはホビープロジェクトであり、可能なデバイスの数に比べて作業量が大きすぎる可能性があります(0が必要です)。

+0

あなたは使用してJavaコードであなたのAndroidデバイスを照会することができます のint []最大=新しいINT [1]; GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE、max、0); – Antinous

答えて

6

1024x1024は、あらゆるデバイス、特に古いデバイスの場合は最も安全です。最近のデバイス(私はGalaxy Nexusを思い出しましたが、最新のICSアップデートではそれが修正されています)はサイズ2048x1024のテクスチャサイズのホワイトクワッドをレンダリングしていますが、新しいデバイスは問題ありません。

新しいデバイスをターゲットにしていて、古いデバイスを互換性のあるものにしたい場合は、タイルセットを分割しても問題ありません。結局のところ、2つまたは3つのスプライトシートをバックグラウンドなどに使用すると、あまりに多くのコンテキストスイッチを実行する可能性は低いです。

+0

問題は、TMXファイル形式を使用してこのタイルセットを使用して多くのレベルを設計したことです。 1024に収まるようにそれを打ち破ると、すべてのレベルも壊れてしまいます。私はおそらく、マップ内のタイルの番号を変更するためのスクリプトを書くことができますが、地図レイヤーはXML内に圧縮形式で保存されます。長い話を簡単に言えば、それは多くの携帯電話のためのゲームを壊すことがわかったら私はそれを行います。そうでなければ、私は合格し、より深刻なプロジェクトのためにそれを覚えています。 – sm4

+1

他にもできることは...テクスチャをOpenGLにロードする前に、ビットマップとしてロードする必要があります。テクスチャを4つに分割し(4つのビットマップにする)、すべての四半期をopengl内の異なるテクスチャにロードして保存しますSpriteの単一の表現におけるテクスチャポインタ。 次に、四半期のUV座標をフルビットマップにマップし、必要な特定のテクスチャをバインドすることができます。それは遅くロードされますが、多分それはあなたのために受け入れられます。がんばろう! – RedOrav

+2

私の質問は本当に私に必要なものを尋ねなかったと思います。しかし、あなたはそれを最も正確に答えました。ありがとう。 – sm4

1

個々のイメージファイルがまだ残っている場合は、小さなアトラスまたはカスタムサイズのアトラLibGdxライブラリからTexturePacker2ツールを使用すると簡単です。

デバイスの正確な制限はわかりませんが、サポートしたいデバイスの最下端を考慮して、そこから上に向かって構築することを検討するのが常に良い方法です。 LibGdxツールを使用すると、後で心を変えることができるので、最も柔軟なソリューションです。

ルックで: LibGdx TexturePacker

関連する問題