Как загрузить текстуру в XNA во время выполнения?
Я работаю над приложением, которое использует фреймворк XNA для выполнения 3D-рендеринга. Теперь я хочу загрузить текстуру из файла. До сих пор я нашел два метода:
Texture2D.FromStream(GraphicsDevice, Stream)проблема с этим подходом заключается в том, что он загружает только gif, png и jpg, и мне также нужна поддержка изображений tga.- Создайте объект
ContentManager. Проблема с этим подходом заключается в том, что кажется, что все текстуры должны быть статически добавлены в проект из документации: "прежде чем ContentManager сможет загрузив актив, вы должны добавить его в свой игровой проект". Программа, о которой идет речь, является редактором уровней, и какие текстуры необходимы, заранее не известно.
Есть ли другой простой способ загрузить текстуру, я думаю использовать какой-то другой класс для загрузки изображения (хотя я не знаю, какой именно, я не очень знаком с C#), а затем, возможно, использовать метод Texture2D.SetData?
Есть ли какой-нибудь другой простой способ достичь того, чего я пытаюсь достичь?
2 ответов:
Есть несколько способов добиться того, чего вы хотите:
Вы можете вызвать конвейер содержимого из в Редакторе, динамически создавая проект содержимого. Как это сделать описано в ПримереWinForms Series 2 . Это, вероятно, "лучший" способ, потому что он позволяет вам продолжать использовать конвейер контента.
Вы можете, как вы говорите, декодировать файл TGA самостоятельно и использовать
SetData. В Google есть много результатов для читателей C# TGA. это первый из них.
Я использовал
Texture2D.FromFile(device, path)раньше, и это хорошо работает. Однако иногда я буду сталкиваться с проблемами и также должен буду указатьTextureCreationParametersи передать их. Имейте в виду, что вам нужно будет утилизировать загруженный Texture2D вручную.
Comments