Производительность на 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? Это метод, который я использую технически правильно, или он даст мне некоторые головные боли позже?

Спасибо.

0 ответов

Другие вопросы по тегам