2011-01-02 3 views
2

너무 낮 - 내 GlSurfaceView.Renderer처럼 보이는 :: onDrawFrame() 정말 거의 호출되지됩니다. 적어도 나는 그것이 다른 방향 일 것으로 기대한다.호출하는 비율은 그냥 이상한 일을 발견

현재 렌더러의 renderMode는 RENDER_CONTINUOUSLY로 설정된다. (사실, 나는 기본값을 수정하지 않았다).

GLSurfaceView.Renderer :: onDrawFrame() 약 15 초에 100 번 호출 : 코드를 측정하는 시간을 삽입함으로써 나는 다음과 같은 관찰합니다. 그리고이 100 프레임은 실제로 그릴 때 약 0.13 초 밖에 걸리지 않습니다.

나는이 느린 곳이 어디에서 왔으며 15s-0.13s 시간이 소비되는 곳이 궁금합니다. 나는 GLSurfaceView가 미친처럼 내 onDrawFrame를 호출하는 것으로 기대하지만

내가 뭔가 잘못하고 있는가, 또는 단순히 뭔가를 모르는 :)하지 않는 것 같습니다? 그냥() ...

답변

6

타이밍 onDrawFrame을의 OpenGL ES를 배우기 시작하면 성능을 측정 할 수있는 신뢰할 수있는 방법이 아니다. onDrawFrame()이 끝나면 렌더링이 완료되었다는 것을 의미하지는 않습니다. 이는 GL에 명령을 보내는 것을 마쳤다는 것을 의미합니다. 실제 렌더링에는 더 많은 시간이 걸릴 수 있으며 이는 아마도 사용자가보고있는 것입니다.

+0

흠. 이 사건에 대해 생각하지 않았을 수도 있습니다. FPS 측정을 위해 어떤 조언을 해주겠습니까? :) – dimsuz

+0

결국 나는 시간을 기반으로 fps를 계산하는 코드를 카운트하는 fps를 onDrawFrame()에서 소비 한 시간을 합산하는 대신에 수행했습니다. 힌트를 가져 주셔서 감사합니다! :) – dimsuz

+0

나는이 똑같은 문제를 겪어 왔지만, 아직도 이것과 관련이있다. 우리는 드로이드와 갤럭시 S 장치에 대한 우리의 게임을 테스트하고 있습니다. 우리가이 정확한 문제를 다루는 드로이드의 고해상도에서는 30fps로 프레임을 잠그려고 시도하지만 드로 프레임에서 30 ~ 60ms 걸리는 호출 사이에는 낮은 해상도로 모든 것이 원활합니다. 우리는 800x400과 533x320의 차이가 너무 커서이 문제를 일으킨다는 것을 믿기 어렵습니다. 그리고 우리는 화면을 그릴 거의 아무것도 그리지 않고 테스트했습니다. 그러나 성난 새와 글로우 하키와 같은 게임은 그가 전혀 도망 가지 않아도 지체하지 않습니다. – AffineGaming

관련 문제