У меня есть игра, использующая GLSurfaceView.Renderer
обычным способом для рендеринга 3D-графики с помощью OpenGL ES 2.0. Весь код рендеринга находится в методе onDrawFrame()
, и по времени его выполнение занимает около 24 мс; это легко даст результат 30 FPS. Однако я обнаружил, что сам вызов onDrawFrame()
часто вызывается только каждые 50–100 мс, так что общее время onDrawFrame()
на самом деле составляет от 70 до 120 мс, что дает в лучшем случае результат 14 кадров в секунду.
Почему Android так долго вызывает onDrawFrame()
? Читая об этом в stackoverflow и других местах, я собираю onDrawFrame()
«блокировок», пока графический процессор не отрендерит кадр, и поэтому мне интересно, может ли быть так, что рендеринг моего графического процессора занимает очень много времени, а не что-то конкретное в Android вызывает задержку?