2013-06-29 8 views
1

내 렌더링 스레드에 무한 루프가 있습니다. 나는 eglSwapBuffers에 대한 모든 호출이 새로운 프레임을 그린다고 가정하고 측정을 시도했지만, 그것은 200fps와 같은 결과를 내고 있습니다. 이것은 가능하지 않습니다. 맞습니까? 새로 고침 빈도는 60을 초과 할 수 없습니까?TextureView를 사용하는 안드로이드 응용 프로그램의 FPS는 어떻게 측정합니까? (OpenGL을 사용하고 있습니다)

이제 SurfaceView의 surfaceTexture 중 surfaceTexture.getTimeStamp()을 사용하여 동일한 작업을 수행하고 있습니다. 이전 반복에서 반환 된 타임 스탬프가 현재와 같지 않은 경우에만 프레임이 그려진 것으로 간주합니다. 허용 할만한 측정 방법입니까? 그림을 그릴 때 50-55fps가 표시됩니다. 즉 루프에는 eglSwapBuffers()getTimeStamp 호출 만 있습니다.

답변

0

surfaceTexture.getTimeStamp()이 정확한 결과를 제공하는 것 같습니다. 연속적인 getTimeStamp() 호출에 의해 반환 된 결과 간의 모든 차이점을 더하여 테스트했으며 코드가 실행 된 총 시간과 같습니다. 이것은 무시할 수없는 프레임이 없음을 나타냅니다.

또 다른 해결책은 this Android app입니다. 어떻게 작동하는지 모르지만 위의 방법과 거의 동일한 결과를 제공합니다.