eglSwapBuffers不稳定/缓慢
我在使用NDK和egl命令的android平板电脑上渲染时间非常短。 我有定时调用eglSwapBuffers
并且花费的时间可变,经常超过设备帧速率。 我知道它与刷新同步,但是这是大约60FPS,而且这里的时间远低于此。
我在交换调用之间发出的唯一命令是glClear
,所以我知道这不是我画的任何事情导致的问题。 即使只是通过清除帧率下降到30FPS(虽然不稳定)。
在同一台设备上,Java中的一个简单的GL程序很容易以60FPS渲染,因此我知道这并不是硬件问题。 我已经浏览了Android Java代码来设置GL上下文,并且看不到任何显着差异。 我也玩过每一个配置属性,虽然有些改变了速度,但没有一个(我能找到)改变了这种可怕的帧速下降。
为了确保事件轮询不是问题,我将渲染转移到线程中。 该线程现在只进行渲染,因此只需重复调用清除和交换。 性能下降仍然存在。
我不知道要检查什么,并且正在寻找关于问题可能出现的建议。
真的没有足够的信息(比如你正在测试什么设备,什么是确切的配置等)来回答这个100%可靠的问题,但这种行为通常是由窗口和表面像素格式不匹配引起的,例如。 16位(RGB565)与32位。
FB_MULTI_BUFFER=3
环境变量将启用飞思卡尔i.MX 6(Sabrelite)板上的多缓冲,并带有最近的LTIB版本(不含X)。 您的GFX驱动程序可能需要这样的东西。