Производительность на GLSurfaceView
Я использую JPCT-AE на GLSurfaceView для создания живых обоев. Сначала я оставил средство визуализации свободно рисовать на поверхности (никоим образом не пытаясь ограничить частоту кадров). Очевидно, использование процессора возросло до 90% (используя Defy+ с пряниками - мои обои отображали одну вращающуюся сферу, содержащую ~200 полисов без освещения).
Теперь я установил для renderMode значение "RENDERMODE_WHEN_DIRTY" на поверхности и запрашиваю рендер для рисования кадров каждые 33 мс с использованием Runnable, публикуемого обработчиком:
glSurfaceView.setRenderer(renderer);
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
final Handler handler = new Handler();
handler.postDelayed(new Runnable(){
public void run() {
glSurfaceView.requestRender();
handler.postDelayed(this, 30);
}
}, 40);
Это уменьшило использование процессора до уровня от 1% до 10%, и это здорово, но теперь я задаюсь вопросом, является ли это лучшим способом сделать это или нет.
Есть ли лучший способ улучшить производительность рендеринга GLSurfaceView? Это метод, который я использую технически правильно, или он даст мне некоторые головные боли позже?
Спасибо.