Android OpenGL错误:";剩余();“需要”;和安卓4.4

Android OpenGL错误:";剩余();“需要”;和安卓4.4,android,opengl-es,runtime-error,Android,Opengl Es,Runtime Error,当我尝试在运行Android 4.4的手机上启动我的应用程序时,我遇到了一个我不理解的错误(如果这有帮助的话,它是Moto G): java.lang.IllegalArgumentException:remaining()

当我尝试在运行Android 4.4的手机上启动我的应用程序时,我遇到了一个我不理解的错误(如果这有帮助的话,它是Moto G):

java.lang.IllegalArgumentException:remaining()

当我在运行安卓4.0的Xperia U上运行完全相同的代码时,它运行得很好。这里发生了什么,我可以采取什么步骤来确保我的代码在各种设备上运行?

Java绑定的一个变体使用
IntBuffer
参数来保存多个返回值。如果您的请求所需的空间大于缓冲区所能容纳的空间,则会出现此错误

较旧版本的jMonkeyEngine使用固定大小的缓冲区请求
GL_COMPRESSED_TEXTURE_格式
。在支持太多格式的设备上调用失败。(您应该查询
GL\u NUM\u COMPRESSED\u TEXTURE\u FORMATS
,并使用该值调整缓冲区大小。)在旧版本的Android上,这实际上导致了堆损坏,因为Java语言绑定的比较错误,并允许数据写入到
IntBuffer
()的末尾


您可以看到对jMonkeyEngine的修复。根据异常中的行号判断,您使用的是在修复日期之前的jMonkeyEngine版本。

我更新到了最新版本的jMonkey SDK,并修复了它。非常感谢你。
java.lang.IllegalArgumentException: remaining() < needed

Exception thrown in Thread[GLThread 85832,5,main] java.lang.IllegalArgumentException: remaining < needed
at android.opengl.GLES20.glGetInteger v(Native Method)
at com.jme3.renderer.android.OGLESShaderRenderer.intialize(OGLESShaderRenderer.java:311)
at com.jme3.system.android.OGLESContext.initInThread(OGLESContext.java:215)
at com.jme3.system.android.OGLESContext.onSurfaceCreated(OGLESContext.java:187)
at android.opengl.GLSurfaceView$GLTread.guardedRun(GLSurfaceView.java:1501)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)