2011-07-29 8 views
3

今日私のopenglesプログラムのフレーム時間は不明な理由で増加することがあります。通常は16msですが、1フレームを終了するのに33msかかることがあります。時間のプロファイリングと研究の後、私はその理由を見つけました:フレーム時間の増加は 'eglSwapBuffers'が通常よりずっと長い時間を要するからです。通常、 'eglSwapBuffers'に費やす時間は10ミリ秒未満ですが、時には約26ミリ秒かかることがあります。eglSwapBuffersが突然終了するのにもっと長い時間がかかります

シーンは静的なので、フレーム時間は安定しているはずですか?

私のフレーム時間を安定させるためにはどうすればよいですか?

+0

可能重複[eglSwapBuffersが遅い/不安定である](http://stackoverflow.com/questions/11948702/eglswapbuffers-is-erratic-slow)21K @ – bummi

+0

、あなたがこの問題を解決するために管理しましたか?私は同じ問題を抱えています。なぜそれが起きているのか理解できません。 – Zippy

答えて

0

このような問題も解決しています。

eglsurfaceのウィンドウのサイズをもっと大きくすると、eglSwapbufferの消費時間が非常に長くなります(通常の状態の約2倍)。

1

different threadにこの問題で多くの助けとなる回答がありました。

この種の動作は、通常、ウィンドウとサーフェスのピクセル形式の不一致によって発生します。 16bit(RGB565)と32bit。

0

私の場合、それはMSAAであることが判明しました。 4x MSAAを使用すると、eglSwapBuffers()が30ミリ秒になります。

私は自分の設定から2行を取り出して、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 
    }; 
関連する問題