1

运行基本示例时: http ://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html

使用 System.currentTimeMillis() 添加一些基本计时,或者使用本机代码并使用 clock_gettime(CLOCK_REALTIME_HR, &res) 两者都会产生相同的结果。我分别测试了两者。

我总是计算约 56 的帧速率。这是帧之间 18 毫秒的粗略平均值。我意识到帧的计时并不是一门完美的科学(计时器的准确性,设备在后台做事)。我只是让它运行,什么都不做,甚至没有 glClear。一个小时后,这是我得到的结果,这与让它运行 1 分钟大致相同。

我尝试了很多方法来实现真正的 59/60fps。我开始怀疑它是否是我的设备(HTC Incredible S)。虽然我尝试过三星 Galaxy S 和 Nexus S,但结果相同。平板电脑根本不会表现出这种行为。在我的 EEE Transformer 和 Xoom 上,我始终可以得到大约 16 毫秒的帧。

这让我相信 VSYNC 是问题所在,并且那一代 Android 手机上的 vsync 很慢。真正的 VSYNC 应该是 ~16ms。实现真正的 60fps 不太可能,但 59fps 应该很常见。

有没有其他人经历过这个?禁用垂直同步的任何提示?我不认为这是可能的。有什么技巧可以控制渲染的“交换”步骤吗?

4

0 回答 0