8

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

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

在同一台设备上,一个简单的 Java GL 程序很容易以 60FPS 的速度呈现,因此我知道这从根本上不是硬件问题。我查看了用于设置 GL 上下文的 Android Java 代码,但看不到任何显着差异。我也玩过每个配置属性,虽然有些稍微改变了速度,但没有一个(我能找到)改变这个可怕的帧速率下降。

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

我不知道要检查什么,正在寻找有关问题可能是什么的建议。

4

2 回答 2

3

确实没有足够的信息(例如您正在测试的设备,您的确切配置等)来回答这个 100% 可靠的问题,但是这种行为通常是由窗口和表面像素格式不匹配引起的,例如。16 位 (RGB565) 与 32 位。

于 2013-07-01T17:03:11.347 回答
0

FB_MULTI_BUFFER=3环境变量将启用飞思卡尔 i.MX 6 (Sabrelite) 板上的多缓冲以及一些最近的 LTIB 版本(没有 X)。您的 GFX 驱动程序可能需要这样的东西。

于 2013-09-24T14:26:43.527 回答