Проблемы с частотой кадров Android - PullRequest
0 голосов
/ 03 января 2012

Я занимаюсь разработкой основной карточной игры для Android. На данный момент я ориентируюсь на Android 3.0 и тестирую на планшете Asus Transformer. Я использую объект SurfaceView с простыми операциями холста, подобными примеру Lunar Lander в SDK. У меня включено аппаратное ускорение в AndroidManifest.xml.

Я практически закончил кодировать игру. Однако у меня есть некоторые проблемы с частотой кадров. Я получаю частоту кадров 21-22 кадров в секунду во время основного игрового процесса. Тем не менее, я ожидал добавить некоторые эффекты частиц для простого лакомства, что, безусловно, даст мне неприемлемую частоту кадров. Чтобы помочь выявить проблему, я закомментировал рисунок для всего текста и карточек, а также для всей анимации. Это подняло мою частоту кадров до 31 кадра в секунду. Это оставляет мне простой игровой цикл, который блокирует холст, заполняет холст черным цветом, рисует фоновое растровое изображение 1280x800, а также разблокирует и публикует холст. Удаление фонового рисования увеличивает частоту кадров примерно до 62 кадров в секунду, что должно быть около максимума устройства из-за дросселирования lockCanvas. Должно ли рисование простого растрового изображения быть такой дорогостоящей операцией? Я знаю, что это большая текстура, но я видел много игр, которые успешно используют большие фоновые текстуры с небольшим эффектом. Можно ли добиться приличной частоты кадров без OpenGL? Я просмотрел журнал и подтвердил, что это не проблема GC.

Единственное, что я до сих пор пробовал, - это убедиться, что растровое изображение не активно повторно масштабируется. Я изменил свой фоновый png на 1280x696, который является точным размером, настроенным для панели действий и основной нижней панели сота. Я поместил измененный файл в папку drawable-nodpi, поэтому считаю, что мое изображение не должно масштабироваться. Однако это никак не повлияло на частоту кадров; частота кадров падает до 31 кадра в секунду, рисуя только фон.

У кого-нибудь есть идеи о том, что я могу сделать, чтобы улучшить частоту кадров? Я предполагаю, что моя проблема должна исходить от рисования растрового изображения, так как я устранил в основном все остальное.

1 Ответ

2 голосов
/ 26 марта 2012

У меня была похожая проблема, которая была вызвана использованием RGB_565 для моего SurfaceView и ARGB_8888 для моего растрового изображения.После того, как я установил Surface View, чтобы использовать его так же, как Bitmap, я перешел с 20 кадров в секунду до 59-60 кадров в секунду.Конверсия очень медленная.Извините, что уже поздно, но, возможно, это поможет кому-то еще.

...