Изображение не является силой 2?

Итак, я создал проект учебника для raindrop от libGDX. Однако, когда я пытаюсь развернуть его в эмулятор, я получаю сообщение о том, что изображение не имеет значения 2. Но я изменил размер изображений на 48X48, используя GIMP (как предлагалось в учебнике). Я полагаю, что он добавил в некоторый код, чтобы можно было добавить в изображения, которые не обязательно были бы силой двух?

Кто-нибудь знает, как я это исправить? Сделать его силой двух - это немного ограничивать... не правда ли? Я внимательно следил за учебником! Итак... я не уверен, куда идти отсюда. Noob в 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: { }

Ответ 1

48x48 не является силой двух. Приложение требует OpenGL ES 2.0, как указано в тексте. Стандартный эмулятор работает только с OpenGL ES 1.0. Вы можете перемасштабировать изображение до 32x32, тогда все будет работать и на OpenGL ES 1.x.

Я бы не рекомендовал использовать эмулятор для тестирования приложений OpenGL ES. Вместо этого используйте реальное устройство.

Ответ 2

Вы можете остановить его от принудительного использования двух требований, установив следующую строку кода в вашем игровом классе в методе create():

Texture.setEnforcePotImages(false);

Ответ 3

это сработало для меня измените все "GL10", импортированные из "com.badlogic.gdx.graphics.GL10" в "GL20", импортированные из "com.badlogic.gdx.graphics.GL20"