我在使用 NDK 和 egl 命令的 android 平板电脑上的渲染时间非常短。我已经定时调用eglSwapBuffers
并且花费了可变的时间,经常超过设备帧速率。我知道它与刷新同步,但大约是 60FPS,而且这里的时间远低于此。
我在调用 swap 之间发出的唯一命令是glClear
,所以我知道这不是我正在绘制的任何东西导致问题。即使只是通过清除帧速率下降到 30FPS(虽然不稳定)。
在同一台设备上,一个简单的 Java GL 程序很容易以 60FPS 的速度呈现,因此我知道这从根本上不是硬件问题。我查看了用于设置 GL 上下文的 Android Java 代码,但看不到任何显着差异。我也玩过每个配置属性,虽然有些稍微改变了速度,但没有一个(我能找到)改变这个可怕的帧速率下降。
为了确保事件轮询不是问题,我将渲染移到了一个线程中。该线程现在只进行渲染,因此只是重复调用 clear 和 swap。缓慢的性能仍然存在。
我不知道要检查什么,正在寻找有关问题可能是什么的建议。