应用程序最初启动时Android Opengl ES 2延迟

时间:2012-03-29 04:01:35

标签: java android opengl-es-2.0 lag

问题是,一旦应用程序启动,将会有一段时间(并且这个时间不一致)应用程序似乎滞后。例如,在导航菜单时,导航动画将非常不连贯。然而,这种滞后通常仅持续约2-3秒。一旦玩家进入游戏,这个问题似乎也会在前2-3秒发生。

我已经排除了GC可能导致这种延迟的原因,因为所有内容都已预先加载,并且所有内存分配都会在游戏首次加载时以及玩家开始新一轮游戏的任何时候完成。

我在运行Android 2.2的Archos 43上运行这些测试。该设备可以处理3D游戏,我已经尝试了几个,而且这些游戏没有落后,所以它一定是我的代码的问题。我在游戏中使用3个线程,其中2个不是由我创建的(渲染线程和事件线程),第三个是游戏更新线程。

这也只是一个假设,但感觉好像游戏只有在必须绘制新纹理(之前没有绘制过的纹理)时才会滞后,即使纹理预先加载了GLES20.glGenTextures,{ {1}}和GLES20.glBindTexture

如果需要,我可以提供来源。

1 个答案:

答案 0 :(得分:0)

听起来你可能在UI线程上做了很多工作,例如加载模型或纹理,这类工作应该在其他地方完成。看看android开发者页面,看看如何避免这种情况,特别是标题“在UI线程中处理昂贵的操作”。 http://developer.android.com/resources/faq/commontasks.html#progressbar

在我目前的一个项目中,渲染一个具有1200个顶点的茶壶,并且在读取文件后必须计算每个顶点法线,我会有一个缓慢的应用程序几秒钟,直到所有后台工作完成。