Как оптимизировать производительность в XNA для Windows Phone - PullRequest
1 голос
/ 08 января 2012

На одном из уровней моей игры у меня достаточно много больших текстур для рисования.Чтобы дать вам представление о том, о чем я говорю, это размеры текстур и количество на уровне.448x420 - 3, 315x400-2, 305x429 -3, 366x167-1, 356x265-4, 401x343-2, 387x251-1 плюс около 20 элементов с гораздо меньшим размером текстуры.

Производительность моей первоначальной реализации составляла 20 кадров в секунду.Затем я создал одну текстурную карту, которая содержала все текстуры, используемые на уровне, что дало мне около 3-4 дополнительных кадров в секунду.Для меня недостаточно 24 кадров в секунду, что еще я могу попытаться оптимизировать?

Ответы [ 2 ]

2 голосов
/ 08 января 2012

Некоторые вещи, о которых я мог подумать за минуту

  • Имеет ли он выделенный графический процессор и память или использует общую память?
  • Вы пытались расширить свои текстуры до степени двух размеров (хотя может только улучшиться время загрузки).
  • Используете ли вы mipmaps или другие типы фильтрации текстур?
  • Как много текселей он пытается собрать?
  • Вы пытались использовать текстуру 1 на 1, просто чтобы посмотреть, действительно ли это ваше узкое место?

По моему опыту, тексель-звонки на мобильные устройства довольно тяжелые. Обязательно постарайтесь максимально уменьшить размер ваших текстур. Посмотрите на ваш проект, если объект занимает всего около 10% экрана, действительно ли ему нужна текстура 128x128 или больше? Я не знаю, какой тип проекта и целевого устройства вы используете, но текстуры 448x420 (не в два раза больше ?!) кажутся излишними для мобильной игры. На самом деле, я бы хотел, чтобы вы старались не превышать суммарное использование текстур 1024х1024 или что-то в этом роде?

Правильно ли я понимаю, что это ваш общий размер текстуры? (448 * 420 * 3) + (315 * 400 * 2) + (305 * 429 * 3) + (366 * 167) + (356 * 265 * 4) + (401 * 343 * 2) + (387 * 251 ) = 2,019,720 пикселей (игнорируя ~ 20 элементов, которые вы упомянули)

Что означает использование 32-битных текстур, теоретически вы используете около 64 МБ оперативной памяти, только для хранения текстур (и даже не предполагая, что mipmaps и XNA не масштабируются до мощности двух текстур) (не уверен, что XNA внутренне использует сжатие dds / dxt (?)). Я могу вообразить, что это довольно высоко для мобильного устройства.

Надеюсь, это поможет решить ваши проблемы.

1 голос
/ 08 января 2012

Вы должны попробовать профилировать ваше приложение, чтобы проверить, действительно ли проблемы связаны с визуализацией графики или где-то еще.

Для этого есть некоторые инструменты, хотя большинство из них имеют ограничения при работе в WP7.Первыми рекомендациями будут Microsoft Windows Phone profiler и PIX для графического мониторинга, упомянутые в посте.Есть также XNA Framework Remote Performance Monitor , но, насколько я могу судить, не существует WP7-совместимой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...