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