11

というわけで、libGDX で雨滴のチュートリアル プロジェクトを作成しました。ただし、エミュレーターにデプロイしようとすると、イメージが 2 の累乗ではないというエラーが表示されます。ただし、GIMP を使用してイメージのサイズを 48X48 に変更しました (チュートリアルで示唆されているように)。必ずしも 2 のべき乗ではない画像を追加できるようにするために、彼は何らかのコードを追加したと思いますか?

これを修正する方法を知っている人はいますか?2 のべき乗にするのは少し制限があります..そうではありませんか? 私はチュートリアルに非常に厳密に従いました!だから... ここからどこへ行けばいいのかわからない。libGDX の初心者。

LogCat ダンプ:

06-11 00:22:50.942: W/dalvikvm(545): threadid=11: thread exiting with uncaught exception (group=0x409c01f8)
06-11 00:22:50.952: E/AndroidRuntime(545): FATAL EXCEPTION: GLThread 72
06-11 00:22:50.952: E/AndroidRuntime(545): com.badlogic.gdx.utils.GdxRuntimeException: Texture width and height must be powers of two: 48x48
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.graphics.Texture.uploadImageData(Texture.java:197)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.graphics.Texture.load(Texture.java:179)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.drop.Drop.create(Drop.java:38)
06-11 00:22:50.952: E/AndroidRuntime(545):  at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:292)
06-11 00:22:50.952: E/AndroidRuntime(545):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1455)
06-11 00:22:50.952: E/AndroidRuntime(545):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
06-11 00:22:51.041: I/AndroidInput(545): sensor listener tear down
06-11 00:22:51.041: I/AndroidGraphics(545): Managed meshes/app: { }
06-11 00:22:51.041: I/AndroidGraphics(545): Managed textures/app: { }
06-11 00:22:51.041: I/AndroidGraphics(545): Managed shaders/app: { }
06-11 00:22:51.041: I/AndroidGraphics(545): Managed buffers/app: { }
4

3 に答える 3

30

48x48 は 2 の累乗ではありません。テキストに記載されているように、アプリには OpenGL ES 2.0 が必要です。標準エミュレータは OpenGL ES 1.0 のみを実行します。画像を 32x32 に再スケーリングすると、すべてが OpenGL ES 1.x でも期待どおりに機能します。

OpenGL ES アプリのテストにエミュレーターを使用しないことをお勧めします。代わりに実際のデバイスを使用してください。

于 2012-06-11T18:06:42.347 に答える
17

create() メソッドのゲーム クラスに次のコード行を設定することで、2 の累乗要件の適用を停止できます。

Texture.setEnforcePotImages(false);
于 2013-06-11T18:57:30.317 に答える