我使用NDK和egl命令在
Android平板电脑上渲染时间非常短.我有时间调用eglSwapBuffers并且需要花费不同的时间,经常超出设备帧速率.我知道它与刷新同步,但大约是60FPS,而且这里的时间远远低于那个.
我在调用swap之间发出的唯一命令是glClear,所以我知道这不是我正在绘制的导致问题的任何东西.即使只是通过清除帧速率降至30FPS(虽然不稳定).
在同一台设备上,Java中的简单GL程序可以轻松渲染到60FPS,因此我知道它并不是一个基本的硬件问题.我查看了用于设置GL上下文的Android Java代码,但看不出任何显着差异.我也玩过每个配置属性,虽然有些人稍微改变了速度,但是没有(我能找到)改变这种可怕的帧速率下降.
为了确保事件轮询不是问题,我将渲染移动到一个线程中.该线程现在只进行渲染,因此只需调用clear和swap重复.缓慢的表现仍然存在.
我没有想法要检查什么,我正在寻找关于问题可能是什么的建议.
解决方法
实际上没有足够的信息(比如你正在测试什么设备,你究竟是什么配置等)来回答这100%可靠但这种行为通常是由窗口和表面像素格式不匹配引起的,例如. 16位(RGB565)对比32位.