我目前正在开发一个opengl ES 1.1游戏,min sdk 8,目标sdk 17,我看到eggSwapBuffers在我有权访问的4.0.3平板电脑上出现异常大的延迟,不会出现在更新或更旧版本上android版本。我也很幸运能够访问两台华硕变压器T101,其中一台运行Honeycomb,因此可以排除这是硬件的限制。
下表显示了许多设备及其性能。
Model OS FPS Max/avg eglSwapBuffer time (ms) Acer A500 4.0.3 12.5 70 /67 Asus T101 3.1 21.8 30/21 Asus T101 4.0.3 12.2 79/65 HTC One X 4.0.4 35.9 14/5 Nexus 7 4.1.2 35.6 16/5 Samsung GTP1000 2.2 24.5 36/28
你可以看到,即使是古老的单核GTP1000也会使双核4.0.3设备的帧率提高一倍。
我正在运行4个线程,一个2D Canvas,GL,UI和一个每200毫秒更新一次AI的心跳。在执行GL线程的eglSwapBuffers调用期间,CPU几乎没有做任何事情。感觉我正在触发某种省电或GPU限制,但我无法找到任何有关此信息的信息。
如果所有其他操作都没有成本,则单独使用交换缓冲区所花费的时间会将帧速率限制为<15FPS。我每帧画150个带纹理的三角形条纹四边形。
如果你能指出我正确的方向,我会感到非常激动,我一直在用一个砖墙敲打我的头。