图像不是2的幂?

时间:2012-06-11 00:26:25

标签: android android-emulator libgdx

所以,我已经通过libGDX制作了雨滴教程项目。但是,当我尝试将其部署到模拟器时,我得到一个错误,表示该图像不是2的幂。但我确实使用GIMP将图像重新调整为48X48(正如教程所建议的那样)。我相信他已经添加了一些代码以确保可以添加不一定是2的幂的图像?

有谁知道我会如何解决这个问题?使它成为两个人的力量有点限制..不是吗?我非常仔细地阅读了教程!所以......我不知道从哪里开始。诺布在libGDX。

LogCat Dump:

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: { }

3 个答案:

答案 0 :(得分:29)

48x48不是2的幂。该应用程序需要OpenGL ES 2.0,如文中所述。标准模拟器仅运行OpenGL ES 1.0。您可以将图像重新缩放到32x32,然后一切都将在OpenGL ES 1.x上按预期工作。

我建议不要使用模拟器来测试OpenGL ES应用程序。请改用真实设备。

答案 1 :(得分:18)

您可以通过在create()方法中设置游戏类中的以下代码行来阻止它强制执行两项要求:

Texture.setEnforcePotImages(false);

答案 2 :(得分:0)

这对我有用 将从“com.badlogic.gdx.graphics.GL10”导入的所有“GL10”更改为从“com.badlogic.gdx.graphics.GL20”导入的“GL20”