Salut, bon j'ai un soucis trés étrange avec XNA. J'ai fais quelques tests avec cette nouvelle API aujourd'hui et les effects me pose un gros problème...
J'ai réduit le code au minimum pour que vous ayez pas trop de lecture
Ici aucun problème le shader est bien chargé et je peux modifier sans problème les variables de celui-ci, en l'occurence une matrice. "CurrentTechnique" est bien initialisée et le test de validation me retourne que c'est bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private Effect Shader; public nxShader(string Source) { Shader = NX.Library.ContentManager.Load<Effect>(Source); Shader.Parameters["WorldViewProjection"].SetValue(Matrix.Identity); Shader.CurrentTechnique = Shader.Techniques["PRE_ZPASS_SIMPLE"]; bool TestTechnique = Shader.CurrentTechnique.Validate(); }
Aprés un petit tour par d'autres classes, je reviens dans la classe contenant mon shader qui n'a pas bougée depuis tout à l'heure. J'appelle une fonction :
et là... catastrophe !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void UpdateTransformations(Matrix World) { Shader.Parameters["WorldViewProjection"].SetValue(Matrix.Identity); }
Alors soit j'ai le droit à un bel access violation soit un message me spécifiant poliment que ma variable est à "null".
Aprés enquête il se trouve que l'effect est toujours correctement initialisé. Par contre, bizarrement, "CurrentTechnique" qui est la technique actuellement active (normalement) et qui était activée et validée lors de la construction est soit à null ou retourne un access violation... d'où l'erreur ici.
Impossible de résoudre ce problème. Ca fait 3 heures que j'essaye tout un tas de choses mais sans aucuns résultats. Si quelqu'un à une idée ou saurait me mettre sur la voie je lui en serait trés reconnaissant.
Partager