Явные вызовы рендеринга с использованием RENDERMODE_WHEN_DIRTY, выигрыш в производительности для игр?
В процессе создания игры для андроида я наткнулся на немного неуверенности. При создании рисунка графики для игры лучше всего было бы реализовать явные вызовы для рендеринга графики (используя OpenGL ES) в игровой цикл?
призвание setRenderMode()
с RENDERMODE_WHEN_DIRTY
постоянный, в моем понимании отключит автоматическую визуализацию контента, позволяя контролировать пропуск кадров и т. д. Но это рекомендуется только для создания приложений, не приносящих выигрыша в производительности в играх, и в основном подходит только для приложений с графическим содержимым, которые не обязательно обновляются в каждом кадре?
Есть ли какой-нибудь ответ на это или все сводится к реализации и обсуждению?
Я должен также упомянуть, что игра разработана для ouya, давая мне только одну точку отсчета с точки зрения аппаратного обеспечения (на данный момент).
1 ответ
Приложения реального времени (такие как игры) получают большую выгоду от наличия гладкой частоты кадров (то есть согласованных кадров в секунду и согласованного времени рендеринга на кадр).
По этой причине обычно лучше использовать рендер как можно быстрее, и Android должен синхронизировать все до частоты обновления. Я бы не советовал пытаться выполнить синхронизацию рендеринга лучше, чем внутренняя Android, даже если вы разрабатываете для одной цели, это может измениться в будущем с обновлениями ОС.
См. Эту (не программирующую) статью для получения дополнительной информации о том, как частота кадров и время кадра влияют на воспринимаемую плавность.