小编Ben*_*ard的帖子

10 秒后,Android 上 OpenGL ES 的 CPU 使用率大幅增加

我有一个在 Android 上运行的非常简单的 OpenGL ES 应用程序 - 它只是加载一个纹理图集,然后在预定位置绘制大量图块

它基于本教程:http : //androidblog.reindustries.com/a-real-open-gl-es-2-0-2d-tutorial-part-1/

渲染大约 10 秒后,CPU 大幅增加(如图所示),渲染每帧所需的时间从大约 1 毫秒增加到大约 14 毫秒(在我的 Nexus 5 上运行)

CPU 使用率图表

我对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)

performance android opengl-es

5
推荐指数
1
解决办法
1223
查看次数

Android NumberFormatException:无效的Double - 除了值是有效的Double

所以前几天,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 - 任何关于它为什么会崩溃的想法?

java double parsing android numberformatexception

3
推荐指数
1
解决办法
3721
查看次数