2011-12-20 40 views
5

Android OpenGL Es 2.0プロジェクトで使用できるテクスチャサイズに制限があるかどうかを知りたいと思います。サイズが4096x4096の巨大なテクスチャを持つことは、小さな画面上にレンダリングされるので少し意味があることを理解しています。しかし、実行時に多くのテクスチャを切り替える必要がある場合はどうなりますか?そして、私がテクスチャアトラスを持っていて、複数の小さなテクスチャアップロードの代わりに素早くシングルアップロードをしたいのであれば。この点についてあなたのアイデアを教えてください。テクスチャサイズの制限? Android Open GL ES 2.0

また、デバイス上のメモリが制限されているため、デバイスで処理できるイメージのサイズに制限がなければなりません。しかし、私はそれが解像度に基づいているのか、サイズに基づいているのかを知りたいと思います。つまり、デバイスに1024x1024のイメージサイズの制限がある場合、サイズが2048x2048で、圧縮されていない1024x1024とほぼ同じサイズの圧縮テクスチャを処理できます。

一般的に、Android 2.2以上を実行している通常のデバイスのテクスチャサイズや解像度の制限については、一般的にどの程度知っているか教えてください。

opengles 2.0で高解像度画像を処理する際のベストプラクティスがあるかどうか教えてください。ロード時でも実行時でも最高のパフォーマンスを得ることができます。

答えて

21

テクスチャサイズにハードウェアの制限があります。手動で検索するには、glbenchmark.comなどのサイトにアクセスします(google galaxy nexusの詳細を表示)。
が自動的にあなたのコードから最大サイズを見つけるには、のようなものを使用することができます。

int[] max = new int[1]; 
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, max, 0); //put the maximum texture size in the array. 

(GL10のために、同じ方法がGLES20のために存在している)、それは処理に来るとき

画像のを編集すると、通常、アンドロイドで作業するときにBitmapのインスタンスが使用されます。これは、イメージの圧縮されていない値を保持するため、解像度に依存します。しかし、recommendedは、OpenGLアプリケーションに圧縮テクスチャを使用するため、メモリ使用効率が向上します(これらの圧縮テクスチャは変更できません)。 previous linkから

テクスチャ圧縮は、大幅にメモリ要件を削減し、メモリ帯域幅のより効率的な 利用することで、あなたの OpenGLアプリケーションのパフォーマンスを向上させることができます。 Androidのフレームワークは、あなたはテクスチャロードと使用状況についての多くの良いプラクティスとヒントが含まれていthis documentを見てみる必要があります

[...]標準機能としてETC1圧縮フォーマットの サポートを提供します。作者は明示的に書き込みます:

ベストプラクティス:テクスチャ圧縮にはETCを使用してください。

ベストプラクティス:表示されているサイズに合わせてジオメトリとテクスチャの解像度が であることを確認してください。 1k x 1k のテクスチャを画面上に最大500ピクセルの幅で使用しないでください。ジオメトリと同じ。

関連する問題