2011-07-29 159 views
3

今天我發現我的opengles程序幀時間有時會因爲未知的原因而增加,通常是16ms,但有時需要33ms才能完成一幀。經過幾個小時的分析和研究,我發現原因:幀時間增加是因爲'eglSwapBuffers'比平時花費更長的時間。通常在'eglSwapBuffers'上花費的時間少於10毫秒,但有時需要大約26毫秒。eglSwapBuffers突然需要更長的時間才能完成

現場是靜態的,所以幀時間應該是穩定的?

請問有誰知道原因請幫忙,我該怎麼做才能讓我的畫面時間保持穩定?

+0

可能重複[eglSwapBuffers飄忽不定/慢](http://stackoverflow.com/questions/11948702/eglswapbuffers-is-erratic-slow) – bummi

+0

@ 21K,你有沒有設法解決這個問題?我有同樣的問題,我不能解決它爲什麼發生.......乾杯 – Zippy

回答

0

我也遇到了這樣的問題。

我發現如果eglsurface的窗口被調整爲更大,eglSwapbuffer花費的時間變得非常長(比正常狀態大約2倍)。

1

different thread有一個答案,幫助我解決了這個問題。

這種行爲通常是由窗口和表面像素格式不匹配造成的,例如。 16位(RGB565)與32位。

0

在我的情況下,它原來是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 
    }; 
相關問題