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



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





  1. Texture2D.FromStream(GraphicsDevice, Stream) проблема с этим подходом заключается в том, что он загружает только gif, png и jpg, и мне также нужна поддержка изображений tga.

  2. Создайте объект ContentManager. Проблема с этим подходом заключается в том, что кажется, что все текстуры должны быть статически добавлены в проект из документации: "прежде чем ContentManager сможет загрузив актив, вы должны добавить его в свой игровой проект". Программа, о которой идет речь, является редактором уровней, и какие текстуры необходимы, заранее не известно.


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



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

2 ответов:

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

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

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

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

Comments

    Ничего не найдено.