我有一个在 Android 上运行的非常简单的 OpenGL ES 应用程序 - 它只是加载一个纹理图集,然后在预定位置绘制大量图块
它基于本教程:http : //androidblog.reindustries.com/a-real-open-gl-es-2-0-2d-tutorial-part-1/
渲染大约 10 秒后,CPU 大幅增加(如图所示),渲染每帧所需的时间从大约 1 毫秒增加到大约 14 毫秒(在我的 Nexus 5 上运行)

我对onDrawFrame方法中的所有内容进行了计时,这完全是GLES20.glDrawElements
我的整个渲染方法是这样的:
GLES20.glUseProgram(ShaderTools.sp_Image);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
int mPositionHandle = GLES20.glGetAttribLocation(ShaderTools.sp_Image, "vPosition");
GLES20.glVertexAttribPointer(mPositionHandle, 3, GLES20.GL_FLOAT, false, 0, vertexBuffer);
GLES20.glEnableVertexAttribArray(mPositionHandle);
int mTexCoordLoc = GLES20.glGetAttribLocation(ShaderTools.sp_Image, "a_texCoord");
GLES20.glVertexAttribPointer(mTexCoordLoc, 2, GLES20.GL_FLOAT, false, 0, uvBuffer);
GLES20.glEnableVertexAttribArray(mTexCoordLoc);
int mtrxhandle = GLES20.glGetUniformLocation(ShaderTools.sp_Image, "uMVPMatrix");
GLES20.glUniformMatrix4fv(mtrxhandle, 1, false, mtrxProjectionAndView, 0);
int mSamplerLoc = GLES20.glGetUniformLocation(ShaderTools.sp_Image, "s_texture");
GLES20.glUniform1i(mSamplerLoc, 0);
GLES20.glDrawElements(GLES20.GL_TRIANGLES, indices.length, GLES20.GL_UNSIGNED_SHORT, …Run Code Online (Sandbox Code Playgroud) 所以前几天,Google Play开发者控制台的Crashes部分中出现了以下错误:
java.lang.NumberFormatException: Invalid double: "?0.05"
Run Code Online (Sandbox Code Playgroud)
现在纠正我,如果我错了,但这实际上是一个有效的双 - 它被认为是我的计算机,模拟器和我自己的Android设备(Nexus 5)上的有效双
它崩溃的设备是运行Android 4.3的Galaxy Note II - 任何关于它为什么会崩溃的想法?