Comment puis-je charger une texture en XNA au moment de l'exécution?
Je travaille sur une application qui utilise le XNA framework pour faire du rendu 3D. Maintenant, je veux charger une texture à partir d'un fichier. J'ai trouvé deux méthodes de mesure:
Texture2D.FromStream(GraphicsDevice, Stream)
Le problème avec cette approche est qu'il ne charge que les formats gif, png et jpg et j'ai aussi besoin de soutien pour tga images.- Créer un
ContentManager
objet. Le problème avec cette approche est qu'il semble que toutes les textures doivent être ajoutés de façon statique au projet, à partir de la documentation: "Avant un content manager permet de charger un actif, vous devez ajouter de l'actif de votre projet de jeu". Le programme en question est un éditeur de niveaux et dont les textures sont nécessaires n'est pas connu à l'avance.
Est-il un autre moyen facile de charger la texture, je suis en train de réfléchir à l'aide de quelques autres de la classe à charger l'image (bien que je ne sais pas qui, je ne suis pas très familier avec le C#) et puis peut-être utiliser le Texture2D.SetData
méthode?
Est-il un autre moyen facile de réaliser ce que je suis en train de réaliser?
OriginalL'auteur Andreas Brinck | 2010-08-16
Vous devez vous connecter pour publier un commentaire.
Il existe quelques façons d'obtenir ce que vous voulez:
Vous pourriez invoquer le contenu de pipeline de dans votre éditeur, dynamique de la création de votre projet de contenu. Comment faire cela est décrit dans la WinForms De La Série 2 De L'Échantillon. C'est probablement la "meilleure" façon, car il vous permet de continuer à utiliser le contenu du pipeline.
Vous pouvez, comme vous le dites, de décoder le fichier TGA-vous et utilisez
SetData
. Il y a beaucoup de résultats pour C# TGA lecteurs sur Google. C'est la première.OriginalL'auteur Andrew Russell
J'ai utilisé
Texture2D.FromFile(device, path)
avant, et il fonctionne bien. Cependant de temps en temps je vais rencontrer des problèmes et devra également spécifierTextureCreationParameters
et de les transmettre. Gardez à l'esprit que vous aurez besoin de disposer de chargé Texture2D manuellement.FromFile
a été remplacé parFromStream
dans XNA 4.0. Étant donné que l'OP est à l'aide deFromStream
, ils veulent probablement un XNA 4.0-compatible réponse.Désolé... je suis toujours en XNA 3.1.
Moi aussi, mais il paye pour lire Shawn Hargreaves du blog 😉
Pourquoi a-t-il besoin d'être éliminés manuellement? Est-ce parce que ce n'est pas en utilisant le contenu du chargeur?
OriginalL'auteur bporter