1

我目前正在开发一个 opengl ES 1.1 游戏,最小 sdk 8,目标 sdk 17,我看到我可以访问的 4.0.3 平板电脑上的 eglSwapBuffers 出现异常大的延迟,这不会出现在新旧版本的 android 上. 我也很幸运能够使用两台华硕变压器 T101,其中一台正在运行 Honeycomb,因此可以排除这是硬件的限制。

下表显示了许多设备及其性能。

模型 OS FPS Max/avg eglSwapBuffer 时间 (ms)
宏碁 A500 4.0.3 12.5 70 /67
华硕 T101 3.1 21.8 30/21
华硕 T101 4.0.3 12.2 79/65
宏达一 X 4.0.4 35.9 14/5
连结 7 4.1.2 35.6 16/5
三星 GTP1000 2.2 24.5 36/28

可以看到,即使是古老的单核 GTP1000 的帧率也是双核 4.0.3 设备的两倍。

我正在运行 4 个线程,一个 2D 画布、GL、UI 和一个每 200 毫秒更新一次 AI 的心跳。在 GL 线程上的 eglSwapBuffers 调用期间,CPU 几乎什么也没做。感觉就像我正在触发某种节能或 GPU 节流,但我无法找到任何有关此的信息。

如果所有其他操作不花费任何成本,仅交换缓冲区所花费的时间就会将帧速率限制在 <15FPS。我每帧绘制 150 个带纹理的三角形条形四边形。

如果你能指出我正确的方向,我会很激动,一个星期的大部分时间里,我一直在用头撞砖墙。

4

0 回答 0