今天我发现我的opengles程序帧时间有时会因为未知的原因而增加,通常是16ms,但有时需要33ms才能完成一帧。经过几个小时的分析和研究,我发现了原因:帧时间增加是因为'eglSwapBuffers‘花费的时间比平时长得多。通常在'eglSwapBuffers‘上花费的时间不到10毫秒,但有时需要大约26毫秒。
场景是静态的,所以帧时间应该是稳定的?
有没有人知道原因,请帮帮忙,我该怎么做才能让我的帧时间稳定?
发布于 2015-05-26 14:00:17
在different thread中有一个答案,它对我解决这个问题帮助很大。
这种行为通常是由窗口和表面像素格式不匹配引起的,例如。16位(RGB565)与32位。
发布于 2012-02-22 18:09:01
我也遇到了这样的问题。
我发现如果eglsurface的窗口大小调整得更大,eglSwapbuffer花费的时间会变得非常长(大约是正常状态的2倍)。
发布于 2018-03-08 05:26:07
在我的例子中,它被证明是MSAA。使用4xMSAA,导致我的eglSwapBuffers()达到30毫秒。
我不得不从我的配置中删除两行,然后返回到2ms交换。
const EGLint attribs[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_DEPTH_SIZE, 16,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
// EGL_SAMPLE_BUFFERS, 1,
// EGL_SAMPLES, 4,
EGL_NONE
};https://stackoverflow.com/questions/6876363
复制相似问题