Как загрузить текстуру в XNA во время выполнения? - PullRequest
8 голосов
/ 16 августа 2010

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 17 августа 2010

Есть несколько способов добиться того, что вы хотите:

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

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

2 голосов
/ 16 августа 2010

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

...