2011-07-29 4 views
3

오늘 내 opengles 프로그램의 프레임 시간이 알 수없는 이유로 증가하는 경우가 종종 있는데, 보통 16ms이지만 한 프레임을 끝내기 위해 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에 대한 답변이 있습니다.

이러한 종류의 동작은 대개 창과 표면 픽셀 형식 불일치로 인해 발생합니다. 16 비트 (RGB565)와 32 비트.

0

내 경우에는 MSAA로 판명되었습니다. 4x MSAA를 사용하여 내 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 
    }; 
관련 문제