Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EGLSWAPBuffer不稳定/速度慢_Android_Opengl Es 2.0_Egl - Fatal编程技术网

Android EGLSWAPBuffer不稳定/速度慢

Android EGLSWAPBuffer不稳定/速度慢,android,opengl-es-2.0,egl,Android,Opengl Es 2.0,Egl,我有一个问题,在android平板电脑上使用NDK和egl命令时渲染时间很短。我对eglSwapBuffers的调用进行了定时,并且占用了可变的时间,经常超过设备帧速率。我知道它与刷新同步,但这大约是60FPS,这里的时间远远低于这一点 我在调用swap之间发出的唯一命令是glClear,因此我知道这不是我正在绘制的任何东西造成的问题。即使只需清除,帧速率也会下降到30FPS(尽管不稳定) 在同一台设备上,一个简单的Java GL程序很容易以60FPS的速度渲染,因此我知道这根本不是一个硬件问题

我有一个问题,在android平板电脑上使用NDK和egl命令时渲染时间很短。我对
eglSwapBuffers
的调用进行了定时,并且占用了可变的时间,经常超过设备帧速率。我知道它与刷新同步,但这大约是60FPS,这里的时间远远低于这一点

我在调用swap之间发出的唯一命令是
glClear
,因此我知道这不是我正在绘制的任何东西造成的问题。即使只需清除,帧速率也会下降到30FPS(尽管不稳定)

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

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


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

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

FB_MULTI_BUFFER=3
环境变量将在具有某些最新LTIB构建(不带X)的飞思卡尔i.MX 6(Sabrelite)板上启用多缓冲。您的GFX驱动程序可能需要这样的功能。

尝试检查测量本身是否不消耗时间,以防万一。
eglSwapBuffers
在android中是一个阻塞调用,有时会影响fps。你也试过android:hardwareAccelerated了吗?你能发布一些代码吗?如果可能,包括您的基准代码。通常,“提交”OpenGL状态的调用(缓冲区交换可能是其中之一)会破坏基准测试,因为它们实际上是处理您之前调用的所有命令的调用。但是,我不确定这是否可能,因为您只是在缓冲区交换之间进行清除。不管怎样,让我们看看代码。@lukewm,你能跟进吗?我现在离这段代码很远,无法再发布示例/提供详细信息。