eglSwapBuffers不稳定/慢

时间:2012-08-14 08:41:33

标签: android opengl-es-2.0 egl

使用NDK和egl命令在Android平板电脑上渲染时间非常短。我有时间调用eglSwapBuffers并且花费了不同的时间,经常超过设备帧速率。我知道它与刷新同步,但大约是60FPS,而且这里的时间远远低于它。

我在调用swap之间发出的唯一命令是glClear,所以我知道这不是我正在绘制的导致问题的任何内容。即使只是通过清除帧速率降至30FPS(虽然不稳定)。

在同一设备上,Java中的简单GL程序可以轻松渲染到60FPS,因此我知道它并不是一个基本的硬件问题。我查看了用于设置GL上下文的Android Java代码,但看不出任何显着差异。我也使用了每个配置属性,虽然有些人稍微改变了速度,但是没有(我能找到)改变这种可怕的帧速率下降。

为了确保事件轮询不是问题,我将渲染移动到一个线程中。该线程现在只进行渲染,因此只需调用clear和swap重复。缓慢的表现仍然存在。

我没有想法要检查什么,我正在寻找可能出现问题的建议。

2 个答案:

答案 0 :(得分:3)

真的没有足够的信息(比如你正在测试什么设备,你究竟是什么配置等)来回答这100%可靠但这种行为通常是由窗口和表面像素格式不匹配引起的,例如。 16位(RGB565)对比32位。

答案 1 :(得分:0)

FB_MULTI_BUFFER=3环境变量将启用Freescale i.MX 6(Sabrelite)板上的多缓冲,其中包含一些最近的LTIB构建(没有X)。你的GFX驱动程序可能需要这样的东西。