3

最近、いくつかのAndroidデバイスでゲームの1つをテストしました。その間、GalaxyS2との奇妙な出会いに出くわしました。ゲームを起動したとき、バックグラウンドを除いてゲーム全体が正常に機能していました。ゲームの背景は、意図したテクスチャではなく黒く表示されていました。インターネットを検索しているときに、このフォーラムに出くわしました。ゲームの背景画像が別の非常に大きなスプライトシート(4096)に含まれているのに対し、残りの俳優はゲームは小さいものに含まれていました。このことから、これはGL_MAX_TEXTURE_SIZEに関連するものであると思いました。

今私の質問は次のとおりです。GoogleNexus10(幅2560)などの大型ディスプレイを備えたデバイスGL_MAX_TEXTURE_SIZEがおそらく2048になる可能性はありますか?

さらに、Androidデバイスで最も一般的なGL_MAX_TEXTURE_SIZEは何ですか?また、アプリケーションで非常に大きな解像度のデバイスを提供する場合は、このような問題に対処する方法を教えてください。

4

1 に答える 1

3

はい、残念ながら可能です。

モバイル デバイスはそれぞれ異なる場合があります。OpenGL ES 2.0 仕様によると、GL_MAX_TEXTURE_SIZE の最小値は 64 しかありません! そのため、ゲームのハードウェア キャップをチェックするのは良い習慣です。ベンダーは最小限の仕様のみをサポートする必要があり、残りはベンダーの選択です。

opengl ES 2.0 の最小上限に関する情報については、 http: //www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xmlを参照してください。

ここ: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/DeterminingOpenGLESCapabilities/DeterminingOpenGLESCapabilities.html という情報があります:

PowerVR MBX グラフィックス ハードウェアは最大 1024 x 1024 のサイズのテクスチャをサポートしますが、PowerVR SGX ソフトウェアは最大 2048 x 2048 のテクスチャをサポートします。どちらのサイズも、OpenGL ES 仕様で要求される最小サイズである 64 x 64 を大幅に超えています。アプリケーションのニーズが OpenGL ES 仕様で要求される最小機能を超える場合、実装を照会してハードウェアの実際の機能を確認し、正常に失敗する必要があります。小さいテクスチャをロードするか、別のレンダリング戦略を選択することができます。

これは iPhone のものですが、同じハードウェアが Android デバイスにもあります。

OpenGL ES 3.0 では、GL_MAX_TEXTURE_SIZE の最小値は 2048 です http://www.khronos.org/opengles/sdk/docs/man3/xhtml/glGet.xml

じゃあどうする? OpenGL は、アプリの作成に使用できる適切で統合されたソフトウェア レイヤーを提供します。それでも、プラットフォームとハードウェアの間にはいくつかの違いがあります。通常、ゲーム エンジンでは、特定の機能をチェックしてから、最小限の要件でも動作することを確認するために「フォールバック」を行います。あなたの質問に対する唯一の答えはありません。問題によって異なります。

テクスチャサイズについては、大きなテクスチャをいくつかの小さな断片にカットしてから、いくつかの長方形/四角形を使用して表示できると思います

于 2013-02-04T18:45:36.833 に答える