Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 图像不是2的幂吗?_Android_Android Emulator_Libgdx - Fatal编程技术网

Android 图像不是2的幂吗?

Android 图像不是2的幂吗?,android,android-emulator,libgdx,Android,Android Emulator,Libgdx,所以,我用libGDX制作了雨滴教程项目。然而,当我试图将它部署到模拟器时,我得到一个错误,说明映像不是2的幂。但我确实使用GIMP将图像的大小重新调整为48X48(正如教程所建议的)。我相信他添加了一些代码,以确保可以添加不一定是二次幂的图像 有人知道我该怎么解决这个问题吗?将其设为2的幂有点限制。。不是吗?我非常仔细地学习了教程!所以我不知道接下来该怎么办。libGDX的Noob LogCat转储: 06-11 00:22:50.942: W/dalvikvm(545): threadid=

所以,我用libGDX制作了雨滴教程项目。然而,当我试图将它部署到模拟器时,我得到一个错误,说明映像不是2的幂。但我确实使用GIMP将图像的大小重新调整为48X48(正如教程所建议的)。我相信他添加了一些代码,以确保可以添加不一定是二次幂的图像

有人知道我该怎么解决这个问题吗?将其设为2的幂有点限制。。不是吗?我非常仔细地学习了教程!所以我不知道接下来该怎么办。libGDX的Noob

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: { }
06-11 00:22:50.942:W/dalvikvm(545):threadid=11:线程退出时出现未捕获异常(组=0x409c01f8)
06-11 00:22:50.952:E/AndroidRuntime(545):致命异常:GL72
06-11 00:22:50.952:E/AndroidRuntime(545):com.badlogic.gdx.utils.GdxRuntimeException:纹理宽度和高度必须是2的幂:48x48
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.graphics.Texture.uploadImageData(Texture.java:197)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.graphics.Texture.load(Texture.java:179)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.graphics.Texture。(Texture.java:133)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.graphics.Texture.(Texture.java:122)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.drop.drop.create(drop.java:38)
06-11 00:22:50.952:E/AndroidRuntime(545):位于com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:292)
06-11 00:22:50.952:E/AndroidRuntime(545):在android.opengl.GLSurfaceView$GLThread.guarderun(GLSurfaceView.java:1455)
06-11 00:22:50.952:E/AndroidRuntime(545):在android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
06-11 00:22:51.041:I/AndroidInput(545):传感器侦听器损坏
06-11 00:22:51.041:I/AndroidGraphics(545):托管网格/应用程序:{}
06-11 00:22:51.041:I/AndroidGraphics(545):托管纹理/应用程序:{}
06-11 00:22:51.041:I/AndroidGraphics(545):托管着色器/app:{}
06-11 00:22:51.041:I/AndroidGraphics(545):托管缓冲区/应用程序:{}

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


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

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

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

32和64是二的幂。48不是。教程说我们可以把它改成48x48。我认为他在那里添加了一些代码,以确保它不会被破坏。有办法吗?这样图像就不必是二的幂了?正如我所说,我按照他在教程中的建议,将图像的大小重新调整为48X48。。。怪异:她说“注意:我们明确要求使用OpenGL ES 2.0。这允许我们加载没有两个大小的图像,这是OpenGL ES 1.0中使用图像的必要条件。”使用两个大小的图像似乎有局限性,但实际上你不会发现这是一个问题。要绕过这个限制,请将纹理(libgdx中有一个纹理打包器)打包到一个大纹理中,并使用纹理图集访问每个单独的纹理区域。这是一件好事,因为切换纹理对于OpenGL来说是一个相对缓慢的操作。这让我抓狂,因为我正在开发的应用程序只能在设备上运行,而不能在模拟器上运行。谢谢还有,很棒的框架伙计!继续努力!谢谢-这是一个方便的解决方案。。即使在支持OpenGL 1.0的目标平台上,使用它是否安全?我更喜欢这个解决方案,因为我正在开发一个2D游戏,因此,我只使用OpenGL的正交绘图模式。在很多情况下,为所有图像尺寸提供2次幂似乎对我来说太过限制。不知道区别是什么,但我必须编写以下代码才能使其正常工作:
GLTexture.setEnforcePotImages(false)
Texture.setEnforcePotImages(false);