今天我發現我的opengles程序幀時間有時會因爲未知的原因而增加,通常是16ms,但有時需要33ms才能完成一幀。經過幾個小時的分析和研究,我發現原因:幀時間增加是因爲'eglSwapBuffers'比平時花費更長的時間。通常在'eglSwapBuffers'上花費的時間少於10毫秒,但有時需要大約26毫秒。eglSwapBuffers突然需要更長的時間才能完成
現場是靜態的,所以幀時間應該是穩定的?
請問有誰知道原因請幫忙,我該怎麼做才能讓我的畫面時間保持穩定?
今天我發現我的opengles程序幀時間有時會因爲未知的原因而增加,通常是16ms,但有時需要33ms才能完成一幀。經過幾個小時的分析和研究,我發現原因:幀時間增加是因爲'eglSwapBuffers'比平時花費更長的時間。通常在'eglSwapBuffers'上花費的時間少於10毫秒,但有時需要大約26毫秒。eglSwapBuffers突然需要更長的時間才能完成
現場是靜態的,所以幀時間應該是穩定的?
請問有誰知道原因請幫忙,我該怎麼做才能讓我的畫面時間保持穩定?
我也遇到了這樣的問題。
我發現如果eglsurface的窗口被調整爲更大,eglSwapbuffer花費的時間變得非常長(比正常狀態大約2倍)。
different thread有一個答案,幫助我解決了這個問題。
這種行爲通常是由窗口和表面像素格式不匹配造成的,例如。 16位(RGB565)與32位。
在我的情況下,它原來是MSAA。 使用4x MSAA,導致我的eglSwapBuffers()變爲30毫秒。
我不得不從我的配置中取出兩行,然後回到2 ms交換。
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
};
的
可能重複[eglSwapBuffers飄忽不定/慢](http://stackoverflow.com/questions/11948702/eglswapbuffers-is-erratic-slow) – bummi
@ 21K,你有沒有設法解決這個問題?我有同樣的問題,我不能解決它爲什麼發生.......乾杯 – Zippy