Некоторые вещи, которые я мог думать в минуту
- Есть ли у него специальный GPU и памяти или с использованием разделяемой памяти?
- Вы пытались расширить свои текстуры до двух размеров (хотя может быть только время загрузки).
- Вы используете mipmaps или другие типы фильтрации текстур?
- Howmany texels он пытается собрать?
- Вы пытались использовать текстуру 1 на 1, просто чтобы убедиться, что это на самом деле ваше узкое место?
По моему опыту, тексельные звонки на мобильные устройства довольно тяжелые. Не забудьте попытаться уменьшить размер ваших текстур как можно больше. Посмотрите на свой проект, если объект занимает около 10% экрана, действительно ли нужна текстура 128x128 или больше? Я не знаю, какой проект и целевое устройство вы используете, но текстуры 448x420 (не сила двух ?!) кажутся чрезмерными для мобильной игры. На самом деле, я бы решил, что вы попытаетесь остаться ниже общего использования текстуры 1024x1024 или что-то в этом роде?
Насколько я понимаю, это ваш общий размер текстуры? (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 (?)). Я могу представить, что это довольно дорого для мобильного устройства.
Надеюсь, это поможет решить проблему с вашим узким местом.
Предложение текстур 1x1 настолько прост в тестировании и поэтому говорит, что оно всегда должно быть первым, что нужно попробовать. Тот факт, что использование атласа текстуры только улучшает вещи в 3-4 кадрах/сек, вызывает у меня подозрение в остальной части программы. – Elideb