XNA лучший способ загрузки двухмерных текстур; моногейма

Я делаю тестовую игру xna в качестве обучающего упражнения, и у меня есть небольшой вопрос об использовании 2d текстур. По сути, игра представляет собой сетку из различных «плиток», взятых из текстового файла карты. Я просто анализирую файл при инициализации уровня и создаю матрицу различных типов тайлов. Уровень по сути представляет собой ванну из настенной плитки и шипов. Итак, по сути, есть много настенных плиток и несколько плиток с шипами, а затем много пустых плиток. Тем не менее, существует четыре типа настенной плитки и текстуры шипов для покрытия разных направлений.

У меня вопрос: как лучше всего загрузить текстуры для каждой плитки? Могу ли я загружать индивидуальные текстуры для каждой плитки? т.е. когда я создаю плитку, передаю ей texture2d, которую я могу рисовать и загружать текстуру одновременно. Это кажется хорошим способом, но тогда я должен загружать каждую текстуру тайлов индивидуально, и это кажется расточительным.

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

Я не уверен, какой из этих способов будет оптимальным с точки зрения производительности, или есть альтернативный подход?

Заранее спасибо


person Pectus Excavatum    schedule 14.07.2013    source источник
comment
Определить лучшее? Вы хотите сэкономить память, улучшить частоту кадров, сократить время разработки или что-то еще? Кроме того, я заметил, что вы разместили здесь один и тот же вопрос, следует ли мне опубликовать один и тот же ответ для обоих? gamedev. stackexchange.com/questions/59109/   -  person craftworkgames    schedule 15.07.2013


Ответы (1)


В конвейере контента замечательно то, что когда вы

Content.Load<Texture2D>("sometexture");

Он не загружает Texture2D каждый раз. Конвейер содержимого достаточно умен, чтобы загружать его один раз и каждый раз отправлять обратно один и тот же Texture2D для этой текстуры. На самом деле было бы хуже, если бы вы сделали статическую структуру.

person Daniel Johnson    schedule 14.07.2013
comment
хорошо, это действительно хорошо знать. Мне не понравилась моя реализация с таблицей спрайтов, поскольку она включала сохранение исходного прямоугольника для каждой рисуемой плитки. Гораздо «приятнее» загружать и передавать текстуру, поэтому я этим и воспользовался. Спасибо - person Pectus Excavatum; 17.07.2013