Как загрузить текстуру в XNA во время выполнения?

Я работаю над приложением, которое использует платформу XNA для 3D-рендеринга. Теперь я хочу загрузить текстуру из файла. Пока я нашел два метода:

  1. Texture2D.FromStream (GraphicsDevice, Stream) Проблема этого подхода в том, что он загружает только gif, png и jpg, и мне также нужна поддержка изображений tga.
  2. Создайте объект ContentManager . Проблема этого подхода заключается в том, что кажется, что все текстуры должны быть статически добавлены в проект из документации: «Прежде чем ContentManager сможет загрузить ресурс, вам нужно добавить ресурс в игровой проект». Рассматриваемая программа является редактором уровней, и какие текстуры нужны, заранее неизвестно.

Есть ли другой простой способ загрузки текстуры, я думаю об использовании другого класса для загрузки изображения (хотя я не знаю что, я не очень знаком с C #) и затем, возможно, использую метод Texture2D.SetData ?

Есть ли какой-нибудь другой простой способ достичь того, что я ' пытаюсь достичь?

8
задан Peter Lillevold 17 August 2010 в 10:17
поделиться

2 ответа

Есть несколько способов добиться желаемого:

  1. Вы можете вызвать конвейер контента из в вашего редактора, динамически создавая ваш контентный проект. Как это сделать, описано в WinForms Series 2 Sample . Это, вероятно, «лучший» способ, потому что он позволяет вам продолжать использовать конвейер контента.

  2. Вы можете, как вы говорите, самостоятельно декодировать файл TGA и использовать SetData . Для читателей C # TGA в Google есть много результатов. Это первый .

3
ответ дан 5 December 2019 в 23:13
поделиться

Раньше я использовал Texture2D.FromFile (device, path) , и он хорошо работает. Однако иногда я сталкиваюсь с проблемами, и мне также придется указать TextureCreationParameters и передать их. Имейте в виду, что вам нужно будет удалить загруженный Texture2D вручную.

2
ответ дан 5 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: