Développement XNA pour la XBox et le PC
312
Voyons comment complexifier les choses… Dans un projet XNA, reprenez la classe Cube
écrite au chapitre précédent. Modifiez la classe de manière à ne plus utiliser la classe
BasicEffect, mais la classe Effect :
Effect effect;
Chargez ensuite l’effet grâce au Content Manager, comme si vous chargiez une texture,
un modèle, etc.
effect = Content.Load("FirstEffect");
Vous accédez aux différentes variables globales de l’effet via la propriété Parameters. Les
variables sont ensuite indexées selon leur nom. Renseignez donc les variables World, View,
Projection et Texture.
effect.Parameters["Projection"].SetValue(projection);
effect.Parameters["View"].SetValue(view);
effect.Parameters["World"].SetValue(Matrix.Identity);
effect.Parameters["Texture"].SetValue(texture);
Tout est prêt, vous pouvez compiler le projet et le lancer : le cube s’affiche correctement.
Pour compliquer encore un peu les choses, modifions ce premier fichier afin qu’il prenne
en charge la lumière ambiante.
Commencez par ajouter une variable globale dans le fichier. Cette variable devra contenir
la couleur de la lumière d’ambiance.
float4 AmbientColor : COLOR0;
Vous n’avez plus qu’à appliquer la lumière d’ambiance dans le pixel shader.
float4 pixelShader(PixelInput input) : COLOR
{
return (tex2D(TextureSampler, input.TexCoord) * AmbientColor);
}
Le fichier d’effet est maintenant prêt. Repassez dans le fichier cube.cs et définissez la
variable AmbientColor.
effect.Parameters["AmbientColor"].SetValue(0.5f);
Plusieurs techniques dans le même fichier d’effet
Si vous aviez eu plusieurs techniques dans le fichier, vous auriez pu définir la propriété CurrentTechnique
grâce à la propriété Techniques, où les techniques sont indexées par leur nom.
effect.CurrentTechnique = effect.Techniques["Default"];
=Labat FM.book Page 312 Vendredi, 19. juin 2009 4:01 16
312
Voyons comment complexifier les choses… Dans un projet XNA, reprenez la classe Cube
écrite au chapitre précédent. Modifiez la classe de manière à ne plus utiliser la classe
BasicEffect, mais la classe Effect :
Effect effect;
Chargez ensuite l’effet grâce au Content Manager, comme si vous chargiez une texture,
un modèle, etc.
effect = Content.Load
Vous accédez aux différentes variables globales de l’effet via la propriété Parameters. Les
variables sont ensuite indexées selon leur nom. Renseignez donc les variables World, View,
Projection et Texture.
effect.Parameters["Projection"].SetValue(projection);
effect.Parameters["View"].SetValue(view);
effect.Parameters["World"].SetValue(Matrix.Identity);
effect.Parameters["Texture"].SetValue(texture);
Tout est prêt, vous pouvez compiler le projet et le lancer : le cube s’affiche correctement.
Pour compliquer encore un peu les choses, modifions ce premier fichier afin qu’il prenne
en charge la lumière ambiante.
Commencez par ajouter une variable globale dans le fichier. Cette variable devra contenir
la couleur de la lumière d’ambiance.
float4 AmbientColor : COLOR0;
Vous n’avez plus qu’à appliquer la lumière d’ambiance dans le pixel shader.
float4 pixelShader(PixelInput input) : COLOR
{
return (tex2D(TextureSampler, input.TexCoord) * AmbientColor);
}
Le fichier d’effet est maintenant prêt. Repassez dans le fichier cube.cs et définissez la
variable AmbientColor.
effect.Parameters["AmbientColor"].SetValue(0.5f);
Plusieurs techniques dans le même fichier d’effet
Si vous aviez eu plusieurs techniques dans le fichier, vous auriez pu définir la propriété CurrentTechnique
grâce à la propriété Techniques, où les techniques sont indexées par leur nom.
effect.CurrentTechnique = effect.Techniques["Default"];
=Labat FM.book Page 312 Vendredi, 19. juin 2009 4:01 16
