<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Graphic Stream : Texture</title><link>http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx</link><description>Tags: Texture</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Wanted : Ressources 3D/2D pour projets Xna</title><link>http://msmvps.com/blogs/valentin/archive/2007/12/20/wanted-ressources-3d-2d-pour-projets-xna.aspx</link><pubDate>Thu, 20 Dec 2007 09:53:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1407034</guid><dc:creator>valentin</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1407034</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2007/12/20/wanted-ressources-3d-2d-pour-projets-xna.aspx#comments</comments><description>&lt;p&gt;Je reçois bcp de mails de personnes qui me demandent comment trouver des resources 3D ou 2D ou bien savoir quels logiciels utiliser pour en créer. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;Il y&amp;#39;a un grand nombre de visites sur ce blog (pratiquement 100000 en un an), je propose que chacun&amp;nbsp;d&amp;#39;entre nous indique où il trouve les ressources pour ses projets.&amp;nbsp;Chaque contribution sera ajoutée à ce post.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Un gros merci.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Je commence &amp;nbsp;:&lt;/p&gt;
&lt;p&gt;Les SDK DirectX : &lt;a href="http://msdn2.microsoft.com/en-us/directx/aa937788.aspx"&gt;http://msdn2.microsoft.com/en-us/directx/aa937788.aspx&lt;/a&gt;&lt;br /&gt;Ils contiennent un grand nombre de fichiers X, texture et modèles en tout genre&lt;/p&gt;
&lt;p&gt;Les projets MS Research : &lt;a href="http://research.microsoft.com/research/allegiance/"&gt;http://research.microsoft.com/research/allegiance/&lt;/a&gt;&lt;br /&gt;Un jeu complet à la Microosft Game, futuriste avec un très grand nombre de ressources (X animés notament)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1407034" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Mesh/default.aspx">Mesh</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Resources/default.aspx">Resources</category></item><item><title>XNA Tutorial 8 : Les textures</title><link>http://msmvps.com/blogs/valentin/archive/2007/02/12/xna-tutorial-8-les-textures.aspx</link><pubDate>Mon, 12 Feb 2007 08:52:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:570799</guid><dc:creator>valentin</dc:creator><slash:comments>42</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=570799</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2007/02/12/xna-tutorial-8-les-textures.aspx#comments</comments><description>&lt;font face="verdana,geneva"&gt;&lt;strike&gt;&lt;em&gt;
&lt;p&gt;&amp;lt; en construction / under construction&amp;gt;&lt;/em&gt;&lt;/strike&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;img style="WIDTH:24px;HEIGHT:24px;" height="24" src="http://msmvps.com/photos/valentin/images/887626/original.aspx" width="24" align="absMiddle" border="1" alt="" /&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;" face="Arial"&gt;Retourner au &lt;/font&gt;&lt;a class="" href="http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;" face="Arial"&gt;sommaire des cours&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Notre premier chapitre consacré aux textures : un vaste, un très vaste sujet et au combien important dans le développement 3D. Le texturing est sans aucun doute l&amp;#39;élément le plus important pour donner du réalisme et de l&amp;#39;interet à un projet 3D. Nul doute qu&amp;#39;après cet apprentissage, nos petites productions n&amp;#39;auront plus rien à voir avec ce que nous faisions jusque là !&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Nous suivrons trois phases dans cet apprentissage : &lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font face="verdana,geneva"&gt;Faire connaissance avec le texturing en apprennant les notions de base.&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font face="verdana,geneva"&gt;Faire connaissance avec le blending de filtrage, de mipmapping, de blending et de multitexturing.&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font face="verdana,geneva"&gt;Opérer sur les textures.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="4"&gt;Texture&amp;nbsp;?&lt;/font&gt;&lt;/p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="Textecourant1er" style="MARGIN:0cm 0cm 1pt;"&gt;&lt;font face="verdana,geneva"&gt;Aucun rapport avec la définition du dictionnaire. La texture est une image qui est plaquée sur un triangle. Il s’agit donc d’un objet à deux dimensions. Nous pourrions la comparer à une surface collée sur un objet 3D pour lui donner un habillage réaliste. XNA comme DirectX autorise toute sorte de taille de texture. En interne il les découpera en images carrés dont le nombre de pixels est une puissance de 2 (16,32,256, …). Dans tous les cas il faut toujours se rappeler que pour&amp;nbsp;la majorité des matériels installés sur les machines,&amp;nbsp;les textures les plus rapides à manipuler font une taille de 256 par 256 et plus la taille de la texture est importante, plus il faudra de temps GPU&amp;nbsp;pour les manipuler.&lt;/font&gt;&lt;/p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="Textecourant1er" style="MARGIN:0cm 0cm 1pt;"&gt;&lt;font face="verdana,geneva"&gt;Si les données affichées à l’écran sont nommées pixels, les données d’une texture sont nommée texels (pour &amp;quot;texture element&amp;quot;). &lt;/font&gt;&lt;/p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="Textecourant1er" style="MARGIN:0cm 0cm 1pt;"&gt;&lt;font face="verdana,geneva"&gt;DirectX dans le chargement s’avère très polyvalent et peut lire un grand nombre de type de fichiers images, à savoir PNG, JPG, BMP et TGA.&lt;/font&gt;&lt;/p&gt;
&lt;p class="Textecourant1er" style="MARGIN:0cm 0cm 1pt;"&gt;&lt;font face="verdana,geneva"&gt;Dans tous les cas le format d’image n’influence rien pour les performances de jeu. Chaque image étant traduite dans un format interne à Direct3D lors de son chargement. Notons enfin que les textures peuvent être générée à la volée à partir d’un accès mémoire.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="3"&gt;&lt;strong&gt;Coordonnées de texture&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Voilà une notion qui peut étonner au premier abord : Une coordonnée de texture permet de spécifier une position dans la texture. Dans la mesure où, dans une texture, l’espace est en 2D, seules deux valeurs sont nécessaire pour spécifier une position : U et V. U représente l’abscisse, à savoir le nombre d’unités à parcourir horizontalement et V qui représente le nombre d’unités verticales (ordonnées) à parcourir. Leurs valeurs oscillent entre 0 et 1 (des valeurs supérieure peuvent être données pour répéter une texture, nous verrons cela plus tard). Le point supérieur gauche de la texture est donc le (0,0) et le point inférieur droit (1,1) pour (U, V). Le schéma ci-dessous explicite tout cela avec la texture que nous allons employer dans notre premier exemple.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571451/original.aspx" width="650" align="absMiddle" border="2" alt="" /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana" size="1"&gt;&lt;u&gt;Les coordonnées de textures.&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="3"&gt;&lt;strong&gt;Placage de textures&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Les coordonnées de textures sont donc une notion simple qui s’apparente aux bases mathématiques de la géométrie dans l’espace mathématique. Toutes les coordonnées (UV) pour le placage sur une forme 3D seront associées à chaque vertex qui la compose.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Pour plus de simplicité nous allons mettre de coté le cube qui servait à tous nos exemples depuis plusieurs cours pour revenir au carré utilisé dans le tutoriel 3. &lt;/font&gt;&lt;font face="Verdana"&gt;Dans ce programme un carré est formé de 4 vertices associés à une couleur et une position X, Y, Z comme ci-dessous.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="Un programme simple déjà vu qui affiche un carré." style="WIDTH:650px;HEIGHT:520px;" height="520" alt="Un programme simple déjà vu qui affiche un carré." src="http://msmvps.com/photos/valentin/images/571474/original.aspx" width="650" align="absMiddle" border="2" /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana" size="1"&gt;&lt;u&gt;Un programme simple déjà vu qui affiche un carré.&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Associons maintenant un troisième type de valeur : les coordonnées de texture nommée ici tu et tv. Nous allons afficher sur ce carré notre texture en entier. Le point haut gauche aura donc la coordonnée de texture (0,0), le point haut droit (1,0) le point bas gauche (0,1) et enfin le point bas droite (1,1). Simple donc. Nous aurons :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="La texture entière occupe la surface du carré." alt="La texture entière occupe la surface du carré." src="http://msmvps.com/photos/valentin/images/571475/original.aspx" align="absMiddle" border="2" /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;La texture entière occupe la surface du carré.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Essayons maintenant de n’afficher que la moitié haut droite de la texture, à savoir la partie :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:32px;HEIGHT:32px;" height="32" src="http://msmvps.com/photos/valentin/images/571476/original.aspx" width="32" align="absMiddle" border="2" alt="" /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Nous aurons donc pour caractéristiques des 4 vertices :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571537/original.aspx" width="650" align="middle" border="2" alt="" /&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;Essayons pour continuer de n’afficher que la moitié basse de la texture :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:64px;HEIGHT:32px;" height="32" src="http://msmvps.com/photos/valentin/images/571538/original.aspx" width="64" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Les caractéristiques seront :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571539/original.aspx" width="650" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Autre exemple, affichons le centre du carré à savoir :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:41px;HEIGHT:32px;" height="32" src="http://msmvps.com/photos/valentin/images/571573/original.aspx" width="41" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;nous aurons :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571572/original.aspx" width="650" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Finissons sur une tâche plus compliquée (rassurez vous seulement d’un chouïa).&amp;nbsp; Nous n&amp;#39;allons pas prendre une portion de la texture de manière a avoir des coordonnées &amp;quot;ronde&amp;quot; (à savoir 0.5 ou 1) mais une portion complétement aléatoire. Il va donc nous falloir calculer la valeur exacte de la texture, prendre le pourcentage et reporter la valeur entre 0 et 1.&amp;nbsp;Mettons au hasard le point haut gauche de la source au texel (12,16). Pour une texture de (64,64),&amp;nbsp;converti en pourcentage nous avons : 18.75% en abscisse (12/64*100) et 25% en ordonnée soit donc en coordonnées de texture 0.1875 pour tu et 0.25 pour tv. Faisons de même pour les 3 autres coins. Au final nous avons :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571572/original.aspx" width="650" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Terminons enfin sur la répétition de textures. Jusqu’à présent les valeurs de tu et tv étaient comprises entre 0 et 1. Que ce passe t’il si ces valeurs dépassent 1 ? XNA, lors du mappage va répéter la texture suivant le pourcentage donné par les coordonnées ;&amp;nbsp; Si tu vaut 1.5 la texture sera copiée entièrement avec la moitié d’une texture sur l’abscisse. Si tv vaut 3, alors sur l’ordonnée nous aurons trois textures copiées. Le dernier schéma de ce point illustre cela très bien :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:650px;HEIGHT:520px;" height="520" src="http://msmvps.com/photos/valentin/images/571580/original.aspx" width="650" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Notons aussi que les valeurs négatives données à tu et tv inverseront le mappage de la texture. XNA permet d’autres interprétations dans le cas ou tu et tv dépassent la valeur 1 (nous verrons cela plus loin dans ce chapitre).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Passons maintenant aux choses concrètes.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="4"&gt;&lt;strong&gt;Textures et XNA&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="3"&gt;&lt;strong&gt;Préparer notre projet&amp;nbsp;à l&amp;#39;utilisation de textures...&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Jusqu&amp;#39;à présent, la seule manière que nous avions pour ajouter des couleurs à un scène 3D étant de créer autant de vertices que de couleurs associées. Nous allons utiliser maintenant un moyen bien plus puissant et efficace en associant chaque vertices à une coordonnée de texture comme vu dans le point précédent. Nous reprendrons un projet relativement similaire à celui utilisé pour le chapitre 4 consacré aux matrices. Revenez quelques instants sur le code qu&amp;#39;il contient avant de continuer plus en avant. Notre but sur ce cours est d&amp;#39;afficher un carré à l&amp;#39;écran et,&amp;nbsp;en utilisant un format de vertice adapté, y plaquer une texture. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;La première étape consiste à définir 6 vertices pour les deux triangles formant le carré. Sachant que nous n&amp;#39;utilisons plus de couleur nous ne pouvons plus utiliser le type &lt;span style="COLOR:teal;"&gt;VertexPositionColor&lt;/span&gt;. Nous utiliserons à la place un nouveau type de vertex : &lt;span style="COLOR:teal;"&gt;VertexPositionTexture&lt;/span&gt;. *&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Remarque : Nous avons déjà abordé les structure de format de vertices comme &lt;span style="COLOR:teal;"&gt;VertexPositionTexture&lt;/span&gt;&amp;nbsp;ou comme &lt;span style="COLOR:teal;"&gt;VertexPositionColor&lt;/span&gt;. Ces formats permettent d&amp;#39;associer à un vertex différentes informations (comme la position, la couleur, les coordonnées de &amp;nbsp;texture ...). Vous vous demandez&amp;nbsp;peut être comment XNA peut il savoir quel type de données (couleur, texture, ...) est associé aux vertices qu&amp;#39;on lui donne&amp;nbsp;? Il utilise tout simple le contenu de la propriété que chaque structure de format doit posséder. Pour plus d&amp;#39;information à ce sujet et pour créer vos propres formats rendez vous ici.&lt;/font&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Changez la déclaration du tableau de vertices ainsi :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;VertexPositionTexture&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;[] vertices;&lt;/span&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Vient maintenant la création de chacun des vertices :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;VertexPositionTexture&lt;/span&gt;&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//triangle 1, face devant&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[0].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[0].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 0f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[1].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[1].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[2].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[2].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//triangle 2, face devant&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[3].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[3].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 0f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[4].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[4].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[5].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[5].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 0f);&lt;/span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;On remarque ici une première différence avec nos programmes précédents : plus de couleur mais une coordonnée de texture associée&amp;nbsp;à chaque vertex. Le vertex 0 se trouve en haut à gauche du carré. La coordonnée (U,V) associée est donc (0, 0). On ancrera donc la partie supérieure gauche de la texture sur ce vertex. Le second vertex&amp;nbsp;se trouve en haut à droite sa coordonnée est donc&amp;nbsp; (0, 0). La partie supérieure droite va être ancrée sur lui. Ainsi de suite pour les 4 autres vertices. C&amp;#39;est exactement ce que nous avons vu au tout début de ce chapitre.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Nous devons aussi spécifier à notre effet que nous ne manipulons plus des vertices colorés, mais texturés. Pour cela modifiez la ligne :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.effect.CurrentTechnique = effect.Techniques[&lt;span style="COLOR:maroon;"&gt;&amp;quot;Colored&amp;quot;&lt;/span&gt;];&lt;/span&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;en&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.effect.CurrentTechnique = effect.Techniques[&lt;span style="COLOR:maroon;"&gt;&amp;quot;Textured&amp;quot;&lt;/span&gt;];&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Il a été vu précédemment que le device où est affiché notre jeu (la carte graphique principale donc) a besoin de connaître le type de vertices utilisé (c&amp;#39;est à dire leur format). Il est donc nécessaire dans la méthode de dessin de modifier la ligne :&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;.graphics.GraphicsDevice.VertexDeclaration = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexDeclaration&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.graphics.GraphicsDevice, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColor&lt;/span&gt;&lt;font color="#000000"&gt;.VertexElements);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;en&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.VertexDeclaration = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;VertexDeclaration&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice, &lt;span style="COLOR:teal;"&gt;VertexPositionTexture&lt;/span&gt;.VertexElements);&lt;/span&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;A ce stade, l&amp;#39;application, à l&amp;#39;exécution affiche un magnifique carré ... noir ! Tout est normal : nous n&amp;#39;avons pas encore utilisé de texture et nous n&amp;#39;utilisons plus de couleur.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Ajout de textures au projet...&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Nous utiliserons la texture prise en exemple précédemment :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="Notre texture" style="WIDTH:64px;HEIGHT:64px;" height="64" alt="Notre texture" src="http://msmvps.com/photos/valentin/images/574354/original.aspx" width="64" align="absMiddle" border="2" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Celle-ci, nommée &lt;em&gt;&amp;quot;texture.jpg&amp;quot;&lt;/em&gt;&amp;nbsp;se trouve à la racine du répertoire HuitiemeChapitre. Ajoutez là en cliquant droit sur le nom du projet et en selectionnant &amp;quot;ajouter un élément existant&amp;quot; : &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="Cliquez droit sur le projet et selectionnez &amp;quot;Ajouter un élément existant&amp;quot;" style="WIDTH:741px;HEIGHT:570px;" height="570" alt="Cliquez droit sur le projet et selectionnez &amp;quot;Ajouter un élément existant&amp;quot;" src="http://msmvps.com/photos/valentin/images/574355/original.aspx" width="741" align="absMiddle" border="2" /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Dans la fenetre qui s&amp;#39;ouvre, choisissez &amp;quot;Content Pipeline&amp;quot; dans la combobox de choix de type de contenu et selectionnez le fichier texture.jpg. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="WIDTH:601px;HEIGHT:393px;" height="393" src="http://msmvps.com/photos/valentin/images/574357/original.aspx" width="601" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Après validation&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;img style="WIDTH:323px;HEIGHT:209px;" height="209" src="http://msmvps.com/photos/valentin/images/574358/original.aspx" width="323" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;Déclarez&amp;nbsp;un&amp;nbsp;object de type &lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Texture2D&lt;/span&gt; dans la classe &lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Game1&lt;/span&gt;.&amp;nbsp;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="courier new,courier"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Texture2D&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; texture;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;C&amp;#39;est cet objet qui va nous permettre de manipuler les textures dans notre application. Rendez vous maintenant dans la méthode &lt;font face="Courier New"&gt;LoadGraphicsContent &lt;/font&gt;: Il nous faut y&amp;nbsp;charger la texture mais aussi spécifier à notre effet que nous associons cette texture à l&amp;#39;affichage des vertices. Nous procédons comme ceci :&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; LoadGraphicsContent(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;bool&lt;/span&gt;&lt;font color="#000000"&gt; loadAllContent)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (loadAllContent)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;// TODO: Load any ResourceManagementMode.Automatic content&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;texture&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;effect.Parameters[&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;xTexture&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;].SetValue(texture);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;// TODO: Load any ResourceManagementMode.Manual content&lt;/span&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;L&amp;#39;objet content de type &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;ContentManager&lt;/font&gt;&lt;/span&gt;&amp;nbsp;s&amp;#39;occupe des ressources du jeu en évitant au développeur d&amp;#39;avoir à se soucier de leur gestion. La méthode Load, générique est son seul membre réellement interessant. Elle renvoie un objet du type spécifié en généricité à partir du path ressource donné. Ici :&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Courier New"&gt;texture = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;texture&amp;quot;&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Nous indiquons la spécificité sur le type &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Texture2D&lt;/font&gt;&lt;/span&gt;&amp;nbsp;et donnons en path la string &lt;span style="COLOR:maroon;"&gt;&lt;font face="Courier New"&gt;&amp;quot;texture&amp;quot;&lt;/font&gt;&lt;/span&gt;. Nous ne donnons pas l&amp;#39;extension &amp;quot;.jpg&amp;quot; car la méthode Load prend le nom AssetName. Pour voir sa valeur, selectionnez la texture dans le projet et appuyez sur F4 (ou cliquez droit sur ce fichier et faites Propriété). Dans la fenêtre d&amp;#39;outil qui s&amp;#39;ouvre le champs AssetName contient la string &amp;quot;texture&amp;quot;. Vous pouvez toujorus changer cette valeur pour donner un nom explicite, mais faites attention à bien vous y retrouver lorsque vous avez plusierus centaines de fichiers ressources !&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Si vous lancez l&amp;#39;application vous obtenez maintenant :&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:617px;HEIGHT:559px;" height="559" src="http://msmvps.com/photos/valentin/images/574419/original.aspx" width="617" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Voila nous avons terminé ! Comme exercice revenez sur le premier point de ce chapitre où l&amp;#39;ont voit différentes manière de texturer un carré. Appliquez ces différentes possibilités à votre programme pour les tester.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;&lt;img title="telecharger" style="WIDTH:24px;HEIGHT:24px;" height="24" alt="telecharger" src="http://www.adcworks.com/images/content/icon-download.gif" width="24" align="middle" /&gt;&amp;nbsp;Vous pouvez télécharger le sample, les deux moteurs et les exercices &lt;a class="" href="http://msmvps.com/files/folders/valentin/entry582110.aspx" target="_blank"&gt;ici&lt;/a&gt;&lt;font face="times new roman,times" color="#000000"&gt;.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;strong&gt;Ajout de textures et de couleurs&amp;nbsp;au projet...&lt;/strong&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;font face="Verdana"&gt;Avant de passer aux choses sérieuses, nous allons tenter d&amp;#39;associer trois données à chaque vertex :&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;La position bien évidemment&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;La texture &lt;/font&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Une couleur&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Nous utiliserons pour cela la structure de format de vertex &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;VertexPositionColorTexture&lt;/font&gt;&lt;/span&gt;&amp;nbsp;en lieu et place de &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;VertexPositionTexture&lt;/font&gt;&lt;/span&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;La déclaration des vertices sera modifiée de manière a spécifier le champs color comme auparavant :&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//triangle 1, face devant&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[0].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[0].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 0f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[0].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Green;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[1].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[1].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[1].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Red;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[2].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[2].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[2].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Yellow;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;//triangle 2, face devant&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[3].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[3].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(0f, 0f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[3].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Green;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[4].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, 10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[4].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 1f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[4].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Red;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[5].Position = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(10f, 0f, -10f);&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[5].TextureCoordinate = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;(1f, 0f);&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;vertices[5].Color = &lt;span style="COLOR:teal;"&gt;Color&lt;/span&gt;.Yellow;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Faites bien attention à remplacer partout &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;VertexPositionTexture&lt;/font&gt;&lt;font face="Verdana" color="#000000"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Si vous lancez cette nouvelle version du programme, vous obtenez la même sortie qu&amp;#39;auparavant : et pour cause, notre fichier effet ne permet pas de gérer les vertices qui possèdent&amp;nbsp;à la fois une coordonnée de texture et une couleur. Deux possibilités face à ce problème : chercher un fichier effet qui permet cela, ou utiliser celui de base inclu dans le framework. C&amp;#39;est cette seconde option que nous utiliserons pour sa simplicité.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;La classe &lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;BasicEffect&lt;/span&gt;&lt;/font&gt;&lt;font face="Verdana"&gt; est une classe qui encapsule en interne un fichier effet (.fx) pratiquement identique à celui que nous utilisions jusque là. Elle&amp;nbsp;offre une interface objet simple et intuitive pour paramétrer la façon dont les vertices sont affichés à l&amp;#39;écran. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Remarque : Pourquoi ne pas avoir directement utilisé cette classe au tout début de notre apprentissage&amp;nbsp;? Pour des raisons de compréhension : lorsqu&amp;#39;on travaille à&amp;nbsp;trop haut niveau les API nous cachent se qui se passe réellement dans les couches basses des fonctionnalités utilisées. On se trouve souvent ainsi confrontés à des bugs incompréhensibles faute de connaissances techniques... Ce qui a été appris jusqu&amp;#39;ici sera très utile lorsque nous aborderons le chapitre sur les effets.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;Supprimez toutes les références vers la classe &lt;font face="Courier New" color="#008080"&gt;Effect&lt;/font&gt; et son instance &lt;font face="courier new,courier"&gt;effect&lt;/font&gt; du programme. Ajoutez la déclaration suivante dans la classe &lt;font face="Courier New" color="#008080"&gt;Game1&lt;/font&gt; :&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;BasicEffect&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; effect;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Dans la méthode Initialize ajoutez le code suivant :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;BasicEffect&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.VertexColorEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.TextureEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.View = viewMatrix;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Projection = projectionMatrix;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.World = &lt;span style="COLOR:teal;"&gt;Matrix&lt;/span&gt;.Identity;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Nous pouvons en convenir : le code est réellement plus simple ; Ecrire :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.View = viewMatrix;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Projection = projectionMatrix;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.World = &lt;span style="COLOR:teal;"&gt;Matrix&lt;/span&gt;.Identity;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;est plus lisible que&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Parameters[&lt;span style="COLOR:maroon;"&gt;&amp;quot;xView&amp;quot;&lt;/span&gt;].SetValue(viewMatrix);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Parameters[&lt;span style="COLOR:maroon;"&gt;&amp;quot;xProjection&amp;quot;&lt;/span&gt;].SetValue(projectionMatrix);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Parameters[&lt;span style="COLOR:maroon;"&gt;&amp;quot;xWorld&amp;quot;&lt;/span&gt;].SetValue(&lt;span style="COLOR:teal;"&gt;Matrix&lt;/span&gt;.Identity);&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Les deux premières instructions&amp;nbsp;indiquent que les vertices affichés à l&amp;#39;écran gèrent à la fois la couleur et les textures :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.VertexColorEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.TextureEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Reste a affecter la dite texture dans la méthode &lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;LoadGraphicsContent&lt;/span&gt; de cette manière :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;effect.Texture = texture;&lt;/span&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Si vous lancez maintenant l&amp;#39;application le résultat est meilleur :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;img style="WIDTH:612px;HEIGHT:480px;" height="480" src="http://msmvps.com/photos/valentin/images/577894/612x480.aspx" width="612" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;La couleur de chaque texel de la texture a été &amp;quot;aditionnée&amp;quot; à la couleur du pixel du carré issue de la couleur du vertex sous jacent.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;Pour la suite de nos applications nous utiliserons la classe &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;BasicEffect&lt;/font&gt;&lt;font face="Verdana" color="#000000"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR:teal;"&gt;&lt;font face="Verdana" color="#000000"&gt;&lt;font face="Verdana"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;&lt;img title="telecharger" style="WIDTH:24px;HEIGHT:24px;" height="24" alt="telecharger" src="http://www.adcworks.com/images/content/icon-download.gif" width="24" align="middle" /&gt;&amp;nbsp;Vous pouvez télécharger le sample, les deux moteurs et les exercices &lt;a class="" href="http://msmvps.com/files/folders/valentin/entry582110.aspx" target="_blank"&gt;ici&lt;/a&gt;&lt;font face="times new roman,times" color="#000000"&gt;.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana" size="4"&gt;&lt;strong&gt;Passons aux choses sérieuses...&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Nous allons maintenant modifier la classe Cube du chapitre précédent afin de lui faire afficher une texture. Il lui sera aussi ajouté un objet de type&amp;nbsp;&lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;BasicEffect&lt;/font&gt;&lt;/span&gt; afin de mettre la gestion de l&amp;#39;affichage des vertices au niveau du cube et non au niveau de tous les cubes. De même, pour changer un peu,&amp;nbsp;une nouvelle texture (qui devrait rappeller de bon souvenirs) sera utilisée:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:256px;HEIGHT:256px;" height="256" src="http://msmvps.com/photos/valentin/images/581524/original.aspx" width="256" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;La classe Cube va contenir deux nouveaux champs : &lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; _texture;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:teal;"&gt;BasicEffect&lt;/span&gt; _effect;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;et deux nouvelles propriétés :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Gets the cube&amp;#39;s effect.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;BasicEffect&lt;/span&gt;&lt;font color="#000000"&gt; Effect&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Gets or sets the cube&amp;#39;s texture.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; Texture&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._texture;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._texture = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.Texture = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;Une méthode &lt;font face="Courier New"&gt;InitializeEffect&lt;/font&gt;&amp;nbsp;est ajoutée pour initialiser notre effet :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;void&lt;/span&gt; InitializeEffect()&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._effect = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;BasicEffect&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._device, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._effect.VertexColorEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._effect.TextureEnabled = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La méthode &lt;font face="Courier New"&gt;Render&lt;/font&gt; est modifiée en conséquence :&lt;/p&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; Render()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.Begin();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;EffectPass&lt;/span&gt;&lt;font color="#000000"&gt; pass &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.CurrentTechnique.Passes)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.Begin();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.Vertices[0].SetSource(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer, 0, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;.SizeInBytes);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.Indices = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._indexBuffer;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.VertexDeclaration = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexDeclaration&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;.VertexElements);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.DrawIndexedPrimitives(&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;PrimitiveType&lt;/span&gt;&lt;font color="#000000"&gt;.TriangleList, 0, 0, 24, 0, 12);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.End();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.End();&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;Le code de la classe&amp;nbsp;est maintenant largement simplifié. Il ne nous reste plus qu&amp;#39;à modifier la déclarations des 8 vertices du cube pour leur donner à chacun, une coordonnée de texture.&amp;nbsp;En fait il y&amp;#39;a ici un problème. Nous avons 8 vertices pour 6 faces et donc 12 triangles. Donc chaque vertex du cube est utilisé pour plusieurs faces. L&amp;#39;image suivant illustre le problème :&lt;/p&gt;
&lt;p&gt;&lt;img title="Le vertex rouge est utilisé par plusieurs face" style="WIDTH:264px;HEIGHT:248px;" height="248" alt="Le vertex rouge est utilisé par plusieurs face" src="http://msmvps.com/photos/valentin/images/581854/original.aspx" width="264" align="absMiddle" border="2" /&gt;&lt;br /&gt;&lt;font size="1"&gt;&lt;u&gt;Le vertex rouge est utilisé par plusieurs face&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Si on prend le vertex surmonté d&amp;#39;un point rouge, on remarque que celui-ci appartient à trois faces :&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La rouge pâle&lt;/li&gt;
&lt;li&gt;La jaune pâle&lt;/li&gt;
&lt;li&gt;La bleue pâle&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Comment donner à ce vertex une coordonnée de texture dans ces conditions ? Pour la face rouge, ce vertex se trouve en bas à droite il aurait donc la coordonnée (1,1), or pour la face jaune il est en haut à droite et possède donc l&amp;#39;emplacement (1,0) sans parler de la face bleue dans laquelle il a la coordonnée (0,0) soit haut gauche. En fait chaque point du cube (au total&amp;nbsp;8 points) appartiennent à 3 faces. Il est donc nécessaire de créer non pas 8 vertices pour un cube mais 24 : chaque face possèdera ses propres vertices non partagés avec les autres faces, nous avons 6 faces de 4 vertices donc 24 vertices. Il ne s&amp;#39;agit pas ici d&amp;#39;une regression ; nous ne revenons pas au cube du &lt;a class="" href="http://msmvps.com/blogs/valentin/archive/2007/01/17/xna-tutorial-5-les-matrices-et-les-transformations.aspx" target="_blank"&gt;tutoriel 5&lt;/a&gt; qui possédait 36 vertices. La méthode&amp;nbsp;&lt;font face="Courier New"&gt;InitializeVertices&lt;/font&gt; se présente désormais ainsi :&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; InitializeVertices()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;[] vertices = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;[24];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face devant&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[0].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[0].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[0].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[1].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[1].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[1].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[2].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[2].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[2].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[3].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[3].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[3].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face derrière&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[4].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[4].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[4].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[5].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[5].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[5].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;.Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 0f);&lt;/font&gt;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;.Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;.TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[7].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[7].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[7].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face gauche&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-29.gif" alt="Music" /&gt;.Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 0f);&lt;/font&gt;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-29.gif" alt="Music" /&gt;.Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-29.gif" alt="Music" /&gt;.TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[9].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[9].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[9].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[10].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[10].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[10].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[11].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[11].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[11].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face droite&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[12].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[12].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[12].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[13].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[13].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[13].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[14].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 1f);&lt;/font&gt;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[14].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[14].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[15].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[15].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[15].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face haut&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[16].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 1f);&lt;/font&gt;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[16].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[16].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[17].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[17].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[17].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[18].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[18].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[18].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[19].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 1f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[19].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[19].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;//face bas&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[20].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[20].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[20].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[21].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(1f, 1f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[21].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[21].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[22].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 1f, 0f);&lt;/font&gt;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[22].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[22].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[23].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(0f, 0f, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[23].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[23].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.IsObjectOriginInCubeCenter)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; i = 0; i &amp;lt; 24; i++)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.Position += &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(-0.5f, -0.5f, -0.5f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexBuffer&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;24,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;&lt;font color="#000000"&gt;.WriteOnly,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;&lt;font color="#000000"&gt;.Automatic);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer.SetData(vertices);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;A noter la présence du bloc :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.IsObjectOriginInCubeCenter)&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt; i = 0 ; i &amp;lt; 24 ; i++)&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices&lt;img src="http://msmvps.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.Position += &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;(-0.5f, -0.5f, -0.5f);&lt;/span&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;J&amp;#39;ai rajouté sur demande de certains d&amp;#39;entre vous une propriétée nommée qui permet de préciser si le centre du cube doit coincider avec l&amp;#39;origine du repère de l&amp;#39;objet (pour plus d&amp;#39;information allez voir &lt;a class="" href="http://msmvps.com/blogs/valentin/archive/2007/02/05/azrr.aspx" target="_blank"&gt;ici&lt;/a&gt;). L&amp;#39;origine se trouve par défaut sur le vertice 0, pour mettre l&amp;#39;origine au centre du cube il me suffit de déplacer tous les vertices de 0.5f unités car le cube a une taille de 1. Modifiez la méthode d&amp;#39;affichage pour indiquer que vous gérez non plus 8 vertices mais 24. Au lancement vous obtenez&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="On aurait presque envie de donner un coup de tête à la mario :)" style="WIDTH:612px;HEIGHT:480px;" height="480" alt="On aurait presque envie de donner un coup de tête à la mario :)" src="http://msmvps.com/photos/valentin/images/581984/612x480.aspx" width="612" align="absMiddle" border="2" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;(je reviendrais dans une annexe sur la manière de faire des mouvements amples et fluides pour ses objets dans une annexe prochainement).&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;span style="COLOR:teal;"&gt;&lt;font face="Verdana" color="#000000"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;&lt;img title="telecharger" style="WIDTH:24px;HEIGHT:24px;" height="24" alt="telecharger" src="http://www.adcworks.com/images/content/icon-download.gif" width="24" align="middle" /&gt;&amp;nbsp;Vous pouvez télécharger le sample, les deux moteurs et les exercices &lt;a class="" href="http://msmvps.com/files/folders/valentin/entry582110.aspx" target="_blank"&gt;ici&lt;/a&gt;&lt;font face="times new roman,times" color="#000000"&gt;.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Verdana" size="4"&gt;&lt;strong&gt;A ce stade de nos connaissances nous pouvons ...&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;L&amp;#39;information qui suit est à prendre avec des pincette mais elle donne toutefois une idée assez précise du niveau de nos connaissances à ce stade de notre apprentissage. Une partie de ceux qui lisent ces lignes ont sans doute déjà joué à l&amp;#39;un des épisode de la série à succès Tomb Raider (l&amp;#39;auteur de cours XNA a pour sa part joué aux version 1, 2, 3, 4). Nous sommes maintenant capable de réaliser des mondes tous à fait similaires à celui présenté par la capture d&amp;#39;écran ci-dessous :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;a class="" href="http://msmvps.com/photos/valentin/images/582003/original.aspx" target="_blank"&gt;&lt;img style="WIDTH:640px;HEIGHT:480px;" height="480" src="http://msmvps.com/photos/valentin/images/582003/640x480.aspx" width="640" align="absMiddle" border="2" alt="" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Regardez attentivement cette image. Vous verrez qu&amp;#39;en fait, ce monde n&amp;#39;est constitué que de formes cubiques comme nous savons très bien les faire maintenant : des cubes, des cubes coupés sur leur diagonale, des cubes coupés en leur milieu etc. C&amp;#39;est là toute l&amp;#39;ingéniosité et toute la puissance du moteur de Core/Eidos : reproduire n&amp;#39;importe quelle architecture/géographique à l&amp;#39;aide de ces formes. Les mouvements de Lara sont&amp;nbsp;d&amp;#39;ailleur soumi à une seule unité de mesure : la taille d&amp;#39;un cube. Ce principe assez proche des jeux de plateforme 2D permet de gérer les collisions et&amp;nbsp;les déplacements très facilement et de créer des formes à l&amp;#39;écran simplement. Core/Eidos peut donc créer des mondes et développer un moteur beaucoup plus rapidement que des moteurs complexes comme celui de World Of Warcraft (que nous reproduirons à la fin de cet apprentissage).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Si le temps nous le permet nous essayerons de reproduire un monde à base de cubes.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="4"&gt;&lt;strong&gt;Les filtres&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="3"&gt;&lt;strong&gt;Introduction&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Tous ceux qui ont travaillé avec des programmes d’édition d’images comme paint shop pro ou photoshop sont familiers des effets de pixellisation. On obtient cet effet désagréable lorsqu’on réduit la taille d’une image selon un rapport impair. Résultat : de nombreux &lt;/font&gt;&lt;font face="verdana,geneva"&gt;détails sont perdus et la qualité de l&amp;#39;image s&amp;#39;en ressent. Pour éviter cela, les bons programmes d’édition d’images proposent différentes techniques de réduction ou d&amp;#39;augmentation de taille d&amp;#39;image aussi nommées filtrage pour réduire au minimum les pertes dues au changement de taille. XNA aussi.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Pour mieux comprendre, voici un exemple concrêt : Quand&amp;nbsp;XNA affiche une primitive, il plaque un modèle 3-D sur un écran 2-D. Si la primitive&amp;nbsp;possède une texture,&amp;nbsp;XNA doit utiliser cette dernière&amp;nbsp;afin de créer une couleur pour chaque Pixel de ce modèle en utiliser une valeur de couleur de la texture. C&amp;#39;est ce&amp;nbsp;processus qu&amp;#39;on appelle filtrage de texture.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Quand une opération de filtre de texture est effectuée, la texture utilisée est &amp;quot;magnifiée&amp;quot; (agrandie)&amp;nbsp;ou &amp;quot;minifiée&amp;quot; (réduite). En d&amp;#39;autres termes, elle est plaquée sur une primitive qui est plus grande ou plus petite que sa propre taille. La magnification d&amp;#39;une texture peut avoir comme conséquence l&amp;#39;utilisation d&amp;#39;un seul texel (point de couleur dans une texture) pour colorer un grand nombre&amp;nbsp;de Pixel à l&amp;#39;écran. L&amp;#39;image résultante peut être volumineuse et pixelisée. La Minification d&amp;#39;une texture au contraire signifie souvent qu&amp;#39;un Pixel simple se substitue à plusieurs&amp;nbsp;texels. L&amp;#39;image résultante peut être trouble . Pour résoudre ces problèmes, se mélanger des couleurs de texel doit être effectué pour arriver à une couleur pour le Pixel.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;XNA tout comme DirectX fournit&amp;nbsp;plusieurs types de filtrage de texture (lineaire, anisotropic, gaussien ...)&amp;nbsp;et un système de mipmapping (notion sur laquelle nous reviendrons plus loin). Si vous ne choisissez aucun filtre, XNA emploie une technique appelée nearestpoint sampling (en gros : choix du texel le plus proche). &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Chaque type de filtrage de texture a des avantages et des inconvénients. Par exemple, le filtrage linéaire de texture peut produire des bords déchiquetés ou un aspect volumineux dans l&amp;#39;image finale. Cependant, c&amp;#39;est un filtre très simple et rapide à mettre en place à faible coùt de mémoire. Le filtrage anisotrope demande plus de temps processeur et beaoucp plus de mémoire.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;L’exemple suivant dans le jeu Might and Magic le montre bien : &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="— La maison vue de loin est belle …" style="WIDTH:640px;HEIGHT:480px;" height="480" alt="— La maison vue de loin est belle …" src="http://msmvps.com/photos/valentin/images/600889/original.aspx" width="640" align="absMiddle" border="2" /&gt;&lt;br /&gt;&lt;font size="1"&gt;&lt;u&gt;La maison vu de loin est belle ...&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img title="— … mais quand on s’approche … tout est pixellisé et … hideux" style="WIDTH:640px;HEIGHT:480px;" height="480" alt="— … mais quand on s’approche … tout est pixellisé et … hideux" src="http://msmvps.com/photos/valentin/images/600903/original.aspx" width="640" align="absMiddle" border="2" /&gt;&amp;nbsp;&lt;br /&gt;&lt;u&gt;&lt;font size="1"&gt;... mais quand on s’approche ... tout est pixellisé et ... hideux le jeu à l&amp;#39;époque, manquait d&amp;#39;un bon filtre de texture... &lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Might and Magic dans sa version 6 (NDA : la meilleure version) n&amp;#39;était pas très avancé graphiquement parlant. Le jeu manquait en autres choses d&amp;#39;un bon filtrage de texture. La première image montre un batiment dans la ville de Sorpigal. Vu de loin, la texture qui est plaquée sur ce batiment semble normale, mais comme le montre la seconde image, si l&amp;#39;on s&amp;#39;approche, un filtre nearest point sampling est effectué pour créer une magnification : on agrandit énormément la texture. En ressort alors un très désagréable effet de pixelisation. Dans la première image, la surface visible du batiment est d&amp;#39;environ 300*200. On s&amp;#39;approche donc de la taille de cette texture : l&amp;#39;affichage est donc optimal. Dans la seconde image la surface d&amp;#39;affichage pour la texture passe a 450*350 et ce pour n&amp;#39;afficher que 8%&amp;nbsp;de la texture ! &lt;/font&gt;&lt;font face="Verdana"&gt;L&amp;#39;utilisation d&amp;#39;un bon filtrage permet d&amp;#39;éviter cet effet pixélisé horrible.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Et Xna dans tout ça ?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;XNA offre au développeurs&amp;nbsp;5 filtrages (tous énuméré dans le type&amp;nbsp;&lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;TextureFilter&lt;/span&gt;) :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&amp;nbsp; 
&lt;table class="" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;b&gt;Membre&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="GaussianQuad" name="GaussianQuad"&gt;&lt;/a&gt;GaussianQuad&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Un filtre 4-sample Gaussien pour la magnification ou la minification.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="PyramidalQuad" name="PyramidalQuad"&gt;&lt;/a&gt;PyramidalQuad&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Un filtre 4-sample pour la magnification ou la minification.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="Anisotropic" name="Anisotropic"&gt;&lt;/a&gt;Anisotropic&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Un filtre de texture anisotrope utilisé pour la magnification ou la minification. Les filtres anisotrope compensent la distorsion représentent par &amp;nbsp;l&amp;#39;angle &amp;nbsp;du polygone à mapper et la position de la caméra.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="Linear" name="Linear"&gt;&lt;/a&gt;Linear&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Un filtre de texture anisotrope utilisé pour la magnification ou la minification. Une moyenne pondérée de 2x2 texels autour du texel concerné est utilisé.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="Point" name="Point"&gt;&lt;/a&gt;Point&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Un filtre de texture point utilisé pour la magnification ou la minification. Le texel avec les coordonnées les plus proches du pixel voulu est utilisé.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;a class="" title="None" name="None"&gt;&lt;/a&gt;None&lt;/p&gt;&lt;/td&gt;
&lt;td class=""&gt;
&lt;p&gt;Aucun filtre.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;C&amp;#39;est la propriété &lt;font face="Courier New"&gt;SamplerStates&lt;/font&gt; de l&amp;#39;objet &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;GraphicsDevice&lt;/font&gt;&lt;/span&gt; qui va nous permettre de spécifier le filtrage à appliquer en minification et/ou en magnification.&lt;br /&gt;Si nous voulons appliquer un filtre anisotrope en mignification et lineaire en magnignification nous ferons :&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.SamplerStates[0].MinFilter = &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt;.Anisotropic;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.SamplerStates[0].MagFilter = &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt;.Linear;&lt;/span&gt; 
&lt;p&gt;&lt;br /&gt;...pas très compliqué. Nous utilisons ici la propriété &lt;font face="Courier New"&gt;SamplerStates&lt;/font&gt; comme un tableau tout simplement parcequ&amp;#39;il est possible de plaquer plusieurs textures sur un même polygone (jusqu&amp;#39;à 8 textures). Nous appliquons ici nos filtres&amp;nbsp;&lt;font face="Courier New"&gt;MinFilter&lt;/font&gt; et &lt;font face="Courier New"&gt;MagFilter&lt;/font&gt;&amp;nbsp;sur la première texture (0). La classe &lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SamplerState&lt;/span&gt;&amp;nbsp;possède de nombreux membres pour la gestion de l&amp;#39;affichage des textures à l&amp;#39;écran. Nous les verrons tous dans ce chapitre.&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana" size="3"&gt;&lt;strong&gt;Un exemple concrêt&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Rien de mieux pour bien comprendre l&amp;#39;effet d&amp;#39;un filtre à l&amp;#39;écran que de développer un exemple. Nous reprendrons le dernier projet pour y effectuer quelques menues modifications. Voici ce que nous allons faire : un cube va être affiché en gros plan. Il tournera sur lui-même a vitesse très réduite de sorte de bien mettre en évidence les différents filtres que nous appliquerons. Les filtres seront selectionnés au clavier : la touche &amp;#39;A&amp;#39; pour anisotope, &amp;#39;L&amp;#39; pour linéaire, &amp;#39;P&amp;#39; pour point, &amp;#39;G&amp;#39; pour Gaussian, &amp;#39;Q&amp;#39; pour Pyramidal, &amp;#39;N&amp;#39; pour aucun. Si la touche Shift est appuyée en même temps, le filtre s&amp;#39;applique en magnification, sinon, en minification.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;En fait le sample sera rapide à écrire, nous n&amp;#39;allons ajouter qu&amp;#39;une vingtaine d&amp;#39;instructions. Première étape, la classe &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Cube&lt;/font&gt;&lt;/span&gt;. Ajout de deux membres et deux propriétés associées pour sauvegarder le filtre en magnification et minification :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt; _minfilter;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt; _magfilter;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt; MagTextureFilter&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._magfilter;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._magfilter = &lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;TextureFilter&lt;/span&gt; MinTextureFilter&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._minfilter;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;._minfilter = &lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Seconde étape : Application des filtres dans la méthode Render :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Render the cube on the device.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; Render()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.Begin();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;EffectPass&lt;/span&gt;&lt;font color="#000000"&gt; pass &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.CurrentTechnique.Passes)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.Begin();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.SamplerStates[0].MinFilter = _minfilter;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.SamplerStates[0].MagFilter = _magfilter;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.Textures[0] = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Texture;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.Vertices[0].SetSource(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer, 0, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;.SizeInBytes);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.Indices = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._indexBuffer;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.VertexDeclaration = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexDeclaration&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;.VertexElements);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device.DrawIndexedPrimitives(&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;PrimitiveType&lt;/span&gt;&lt;font color="#000000"&gt;.TriangleList, 0, 0, 24, 0, 12);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.End();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._effect.End();&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;C&amp;#39;est terminé ! La classe &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Game1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;a bien entendu été modifiée pour pouvoir affecter au cube le filtre voulu suivant la touche clavier appuyée. A l&amp;#39;exécution, l&lt;/font&gt;&lt;font face="Verdana"&gt;&amp;#39;application se présente ainsi :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:612px;HEIGHT:480px;" height="480" src="http://msmvps.com/photos/valentin/images/605793/612x480.aspx" width="612" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;En jouant avec les touches a, A, l, L, p, P, g, G,&amp;nbsp;q, Q, n ou N on peut facilement voir les différences de qualité entre tous les filtres suivant les angles de vue et la distance du cube. Les deux images suivants explicite cela. En mode point, le cube en courte distance donne l&amp;#39;affichage pixélisé suivant&amp;nbsp;:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;a class="" title="Mode point (cliquez pour agrandir)" href="http://msmvps.com/photos/valentin/images/605822/original.aspx"&gt;&lt;img title="Mode point" style="WIDTH:297px;HEIGHT:480px;" height="480" alt="Mode point" src="http://msmvps.com/photos/valentin/images/605822/297x480.aspx" width="297" border="2" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Le zoom sur la face du cube en mode point montre bien l&amp;#39;effet de pixalisation. Maintenant la même face en anisotropie :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;a class="" title="Le filtre anisotropic. Cliquez pour agrandir" href="http://msmvps.com/photos/valentin/images/605826/original.aspx"&gt;&lt;img title="La même face en anisotropie" style="WIDTH:297px;HEIGHT:480px;" height="480" alt="La même face en anisotropie" src="http://msmvps.com/photos/valentin/images/605826/297x480.aspx" width="297" align="absMiddle" border="2" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;donne un bien meilleur résultat visual.&amp;nbsp; &lt;/font&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Cet exemple n&amp;#39;est qu&amp;#39;une première approche des filtres. Il met en évidence l&amp;#39;importance qu&amp;#39;ils revettent pour le design et l&amp;#39;aspect de nos productions. C&amp;#39;est aussi un élément important à prendre en compte si l&amp;#39;on veut rendre son jeu accessible à tous, un filtre gourmant comme l&amp;#39;anisotrope doit être un choix et non une obligation.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Pour cela vous devez toujours vérifier avant toute chose que la machine sur laquelle tourne votre application supporte&amp;nbsp;la technologie ou la fonctionnalité que vous voulez utiliser. D&amp;#39;une manière générale faites donc toujours des tests par rapport à la propriété &lt;font face="Courier New"&gt;GraphicsDeviceCapabilities&lt;/font&gt;&amp;nbsp;de l&amp;#39;objet &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;GraphicsDevice&lt;/font&gt;&lt;/span&gt;. Cette propriété de type &lt;font color="#008080" size="2"&gt;GraphicsDeviceCapabilities&lt;/font&gt;&amp;nbsp;contient un ensemble de booléean et d&amp;#39;énumération indiquant toutes les fonctionnalités et technologies supportés par le matériel en rapport avec le device courant. Pour savoir si l&amp;#39;anisotrop est supporté, faites un test sur :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.GraphicsDeviceCapabilities .TextureFilterCapabilities.SupportsMagnifyAnisotropic&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.GraphicsDeviceCapabilities.TextureFilterCapabilities.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;pour la magnification et sur :&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.graphics.GraphicsDevice.GraphicsDeviceCapabilities .TextureFilterCapabilities.SupportsMinifyAnisotropic&lt;/span&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana"&gt;pour la minification. &lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Remarque : une annexe sera écrite prochainement et consacrée uniquement à l&amp;#39;importance des tests sur les capacités du matériel avant l&amp;#39;exécution.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;De même (mais là nous voyons vraiment loin) il est préférable de proproser les fonctionnalités poussées comme ce filtre dans un menu d&amp;#39;option.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="4"&gt;&lt;strong&gt;Le mip mapping&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;em&gt;Mip vient du latin Multum in parvo, qui signifie « beaucoup de choses dans un petit endroit ».&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="3"&gt;&lt;strong&gt;&amp;nbsp;Principe&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="verdana,geneva"&gt;Le mipmapping est une technique visant à améliorer l&amp;#39;affichage des textures sur les polygones en prennant en compte la distance comprise entre le dit polygone et la position de la caméra. &lt;/font&gt;&lt;font face="verdana,geneva"&gt;Le niveau de détail des textures est adapté à la distance de l&amp;#39;objet. Ainsi, un objet proche de la caméra&amp;nbsp;affichera des textures en haute résolution tandis qu&amp;#39;un objet situé au loin sera plaqué avec une texture de petite taille. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Chaque texture utilisée dans un processus de mip mapping&amp;nbsp;est appellé &amp;quot;niveau de&amp;nbsp;MIP map&amp;quot; ou LOD (pour Level Of Detail). Elles sont choisies suivant la distance à la caméra. La technique du&amp;nbsp;MIP mapping consiste à envoyer au GPU des textures de résolutions décroissantes qui seront utilisées à la place de la texture originale. Le choix de la texture ayant la taille la plus adaptée s&amp;#39;effectue selon la distance du point de vue de l&amp;#39;objet texturé et le niveau de détails nécessaire. Le GPU n&amp;#39;a alors plus qu&amp;#39;à appliquer les bonnes textures sur les bons objets suivant leur éloignement, réadaptant la texture chaque fois que l&amp;#39;objet se rapproche. La texture utilisée lors du rendu sera alors celle dont la résolution est la plus proche de celle de l&amp;#39;objet sur l&amp;#39;image projetée. &lt;/font&gt;&lt;font face="Verdana"&gt;Chaque niveau doit avoir pour hauteur et largeur la moitié de la hauteur et largeur du niveau précédent. Le dernier niveau a bien évidemment au moins un coté égal à 1.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Par exemple, d&amp;#39;une image d&amp;#39;une taille de 256x256 pixels seront produits les mêmes images aux résolutions de 128x128 pixels, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2 et 1x1. Si la taille de l&amp;#39;objet sur l&amp;#39;image projetée à l&amp;#39;écran est de 30x30 pixels, la texture utilisée sera alors celle de résolution 32x32 pixels.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Le filtrage joue ici un rôle primodial en évitant de &lt;/font&gt;&lt;font face="verdana,geneva"&gt;voir les &amp;quot;sauts&amp;quot; lors du passage d&amp;#39;une texture à l&amp;#39;autre, grâce à une transition progressive.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="verdana,geneva"&gt;Quel est l&amp;#39;interet de du mip mapping ? Si cette technique est gourmande en mémoire vidéo (elle consomme un tiers de mémoire en plus), elle est plus rapide&amp;nbsp;: La diminution du nombre de texels à traiter et des opérations de filtrages en temps réel de la texture permettent un rendu plus rapide de l&amp;#39;image. De plus le choix des différents niveaux de mipmap peut être laissé à l&amp;#39;apprecciation du développeur :&amp;nbsp;Souvent laisser votre machine opérer pour voir les filtres peut donner un résultat qui s&amp;#39;avère desastreux et ce, même avec les meilleures techniques de filtrage. Prennez l&amp;#39;exemple de l&amp;#39;image suivante qui pourrait se trouver dans un de vos jeu :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:367px;HEIGHT:424px;" height="424" src="http://msmvps.com/photos/valentin/images/609099/original.aspx" width="367" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Le message qu&amp;#39;elle véhicule est clair : tirer sur la cible fait perdre le joueur. Si nous laissons la machine gérer le mip mapping et la réduction de la texture nous pouvons obtenir le résultat suivant &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:184px;HEIGHT:212px;" height="212" src="http://msmvps.com/photos/valentin/images/609100/original.aspx" width="184" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;C&amp;#39;est cette texture qui pourrait etre plaqué sur une forme 3D se trouvant loin du joueur. Celui-ci ne voyant pas le message tirera à coup sur. En fait l&amp;#39;algorythme de réduction d&amp;#39;image ne se préoccupe pas de l&amp;#39;information que l&amp;#39;image porte dans le mesure où il ne peut la quantifier. Il ne prend donc pas en compte l&amp;#39;importance de laisser le texte visible après une réduction n&amp;#39;est donc pas pris en compte dans le calcul du filtre. Si ce n&amp;#39;est pas la machine qui effectue cette tâche mais une personne, celle-ci peut réduire l&amp;#39;image de manière intelligente en gardant l&amp;#39;information visible au maximum :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:184px;HEIGHT:212px;" height="212" src="http://msmvps.com/photos/valentin/images/609101/original.aspx" width="184" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="3"&gt;&lt;strong&gt;Paramétrage du Mipmapping&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;Deux paramètres peuvent intervenir dans l&amp;#39;affichage d&amp;#39;une texture mipmappée : Le MaxAnisotropy et le MipMapLevelOfDetailBias.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="verdana,geneva"&gt;MaxAnisotropy&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;L’anysotropie est un filtre intelligent et assez gourmant en ressource (bien qu’il soit souvent intégré au hardware des cartes graphiques). Il se base sur l’aspect graphique de l’objet sur lequel on plaque la texture. Les texels ne sont pas tirés d’une forme symétrique, mais plutôt en utilisant un motif irrégulier ajusté à la perspective (on parle de figure anisotropique). Le nombre de texels pris en compte pour ce filtrage détermine la qualité de celui-ci. Avec le filtrage anisotropique 1x, on prend 8 texels. Le niveau maximum est 16x, les plus courants sont 2x (16 texels), 4x (32 texels), 8x (64 texels) et 16x (128 texels). Plus la valeur de MaxAnisotropy est importante, et plus le niveau de filtrage est élevé, et forcement, plus le temps de calcul augmente (et ceci de manière exponentielle…). &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="verdana,geneva"&gt;MipMapLevelOfDetailBias&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Il arrive que pour la beauté du jeu il faille garder un LOD plus longtemps que prévu en retardant le passage à un LOD inférieur lorsque la caméra s’éloigne par exemple. C’est le LOD bias qui permet de réaliser cette opération. Si une surface s’éloigne de l’utilisateur, augmenter le LOD bias revient à retarder l’utilisation du LOD inférieur. Au contraire, en diminuant sa valeur, on passe plus rapidement aux LOD inférieurs.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;font size="3"&gt;&lt;strong&gt;Après la théorie, la pratique !&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;Il est temps de passer aux choses sérieuses. Le sample que nous allons réaliser ici aura pour but de mettre en évidence le mipmaping et les impacts des différents filtres. Nous allons réaliser pout cela un damier de&amp;nbsp;64 cases sur&amp;nbsp;64 cases. Chaque case sera associée à une texture &amp;quot;mipmappée&amp;quot;. La camera pourra se déplacer sur ce damier et nous pourrons ainsi voir, en se déplaçant l&amp;#39;évolution des textures sur les différentes cases. Nous aurons trois types de textures : des textures de couleur qui permettrons d&amp;#39;apprecier facilement le passage entre deux LOD, des textures représentant un sol pavé pour voir en réel ce que nos choix produisent, une texture damier pour apprécier la qualité des filtres.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;La première étape consiste donc à créer ce qui va être notre premier terrain de jeu. A ce stade de nos connaissances il y a ici&amp;nbsp;aucune difficulté&amp;nbsp;: ayant déjà développé des applications affichants un carré,&amp;nbsp;nous sommes largement en mesure de créer un monde constitué de 64 carrés sur 64 carrés. Ouvrez le projet nommé &amp;quot;TroisiemeProjetMipmap&amp;quot;. Une nouvelle classe&lt;/font&gt;&amp;nbsp;&lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Region&lt;/font&gt;&lt;/span&gt; &lt;font face="verdana,geneva"&gt;fait son apparition. Elle sera chargé de la création et de l&amp;#39;affichage d&amp;#39;un terrain. Elle possède un seul vertexbuffer et un seul indexbuffer. Le vertexbuffer contiendra les 64*64 cases du terrain, sachant que chaque case possède 4 vertices. La&amp;nbsp;méthode&lt;/font&gt; &lt;font face="Courier New"&gt;InitializeVertices&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;se présente comme suit&amp;nbsp;:&lt;/font&gt; &lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; InitializeVertices()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;float&lt;/span&gt;&lt;font color="#000000"&gt; caseSize = 16;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;[] vertices = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;[_numberOfVertices];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; index = 0;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; j = 0; j &amp;lt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._depth; j++)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; i = 0; i &amp;lt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._width; i++)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(i * caseSize, j * caseSize, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index +1 ].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(i * caseSize + caseSize, j * caseSize, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index +1 ].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index +1 ].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 0);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 2].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(i * caseSize + caseSize, j * caseSize - caseSize, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 2].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 2].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(1, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 3].Position = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector3&lt;/span&gt;&lt;font color="#000000"&gt;(i * caseSize, j * caseSize - caseSize, 0f);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 3].Color = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.Color;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[index + 3].TextureCoordinate = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Vector2&lt;/span&gt;&lt;font color="#000000"&gt;(0, 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;index+=4;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexBuffer&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;VertexPositionColorTexture&lt;/span&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_numberOfVertices,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;&lt;font color="#000000"&gt;.WriteOnly,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;&lt;font color="#000000"&gt;.Automatic);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._vertexBuffer.SetData(vertices);&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Les membres depth et width représentent la profondeur et la largeur du monde (ils possèdent donc pour valeur 64 chacun donc). La double boucle&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;parcours le monde de jeu sur chaque ligne et chaque colonne en créant un carré à chaque fois. La valeur&lt;/font&gt; caseSize&amp;nbsp;représente &lt;font face="verdana,geneva"&gt;la taille d&amp;#39;un carré. Rien de compliqué ici. La méthode&lt;/font&gt;&amp;nbsp;&lt;font face="Courier New"&gt;InitializeIndices&lt;/font&gt; &lt;font face="verdana,geneva"&gt;est la suivante :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; InitializeIndices()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;[] indices = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;[_numberOfIndices];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt; index = 0;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt; indexCase = 0;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; j = 0; j &amp;lt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._depth; j++)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt; i = 0; i &amp;lt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._width; i++)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indices[index] = indexCase;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indices[index + 1] = (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;)(indexCase + 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indices[index + 2] = (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;)(indexCase + 3);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indices[index + 3] = (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;)(indexCase + 1);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indices[index + 4] = (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;)(indexCase + 2);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;indices[index + 5] = (&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;)(indexCase + 3);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;index += 6;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;indexCase += 4;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._indexBuffer = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;IndexBuffer&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._device,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;short&lt;/span&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_numberOfIndices,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;&lt;font color="#000000"&gt;.WriteOnly,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;&lt;font color="#000000"&gt;.Automatic);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._indexBuffer.SetData(indices);&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Nous spécifions 6 indices pour chaque carrés (une case équivaut à deux triangles de 3 points). Rien de vraiment compliqué là encore. Terminons sur cette classe en ajoutant qu&amp;#39;une propriété&lt;/font&gt; TextureMipMapFilter &lt;font face="verdana,geneva"&gt;a été ajoutée afin de pouvoir spécifier&amp;nbsp;un filtre mipmap depuis la classe&lt;/font&gt; &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Game1&lt;/font&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Chaque texture utilisée sera un mipmap composé de 6 LODs (256*256, 128, 60, 32, 16 et enfin 8). De la même façons que le premier projet de ce chapitre nous allons incorporer les LODs de chaque texture dans le projet. La texture colorée possédera les LOD suivants :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;img style="WIDTH:800px;HEIGHT:600px;" height="600" src="http://msmvps.com/photos/valentin/images/609218/original.aspx" width="800" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;chaque couleur permettra de bien discerner les niveaux de mip map utilisé. La texture de sol utilisera les LOD suivants:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;img style="WIDTH:800px;HEIGHT:600px;" height="600" src="http://msmvps.com/photos/valentin/images/609244/original.aspx" width="800" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Chaque LOD a été placé dans un répertoire du projet nommé MipMapTextures de la même façon que pour le premier projet de ce chapitre. C&amp;#39;est la classe&lt;/font&gt; &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Game1&lt;/font&gt;&lt;/span&gt; &lt;font face="verdana,geneva"&gt;qui va former&amp;nbsp;les trois&amp;nbsp;textures composée de 6 LODs. Dans celle-ci se trouvent trois méthodes similaires nommées&lt;/font&gt; &lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;mso-ansi-language:FR;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;GenerateMipmap&lt;/span&gt;, &lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;mso-ansi-language:FR;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;GenerateMipmapTexture&lt;/span&gt;&amp;nbsp;et &lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;mso-ansi-language:FR;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;GenerateMipmapCase&lt;/span&gt; &lt;font face="verdana,geneva"&gt;respectivement pour la texture colorée, de sol et de damier. A noter qu&amp;#39;on aurait pu ici factoriser le code en une seule méthode, mais pour des raisons de compréhension, cela n&amp;#39;a pas été fait. Ces trois méthodes étant similaires, nous n&amp;#39;en verrons qu&amp;#39;une :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; GenerateMipmap()&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; mainTexture = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.graphics.GraphicsDevice,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;256, 256,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;&lt;font color="#000000"&gt;.Dynamic,&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;SurfaceFormat&lt;/span&gt;&lt;font color="#000000"&gt;.Color, &lt;/font&gt;&lt;span style="COLOR:green;"&gt;//std 32 bits mode&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;&lt;font color="#000000"&gt;.Manual);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture256 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\256&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture128 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\128&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture064 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\64&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture032 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\32&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture016 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\16&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt; texture008 = content.Load&amp;lt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(&lt;/font&gt;&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\8&amp;quot;&lt;/span&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[] array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[256 * 256];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture256.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(0, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[128 * 128];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture128.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(1, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[64 * 64];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture064.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(2, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[32 * 32];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture032.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(3, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[16 * 16];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture016.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(4, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;[8 * 8];&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture008.GetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(array);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&lt;font color="#000000"&gt;&amp;gt;(5, &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, array, 0, array.Length, &lt;/font&gt;&lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;&lt;font color="#000000"&gt;.None);&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_sampleMipmapColor = mainTexture;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Cette méthode charge dans une variable locale nommée 6 LOD. Si quelque chose vous semble obscur de les explications suivent, reportez vous à la présentation du premier projet au tout début de ce chapitre. La première instruction&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; mainTexture = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice,&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;256, 256,&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;.Dynamic,&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;SurfaceFormat&lt;/span&gt;.Color, &lt;span style="COLOR:green;"&gt;//std 32 bits mode&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;.Manual);&lt;/span&gt; 
&lt;p&gt;&lt;font face="verdana,geneva"&gt;créé la texture qui va contenir les LOD. Nous n&amp;#39;utilisons pas la classe Content pour la créer et nous aurons donc à la gérer nous même (nous reviendrons sur ce point plus loin). Une référence vers le device est bien évidemment donnée ainsi qu&amp;#39;une taille de 256*256. C&amp;#39;est à dire la taille du premier Level Of Detail. La valeur 6 représente le nombre de LOD que nous utilisons&lt;/font&gt;.&amp;nbsp;&lt;font face="Courier New"&gt;&lt;span style="COLOR:teal;"&gt;ResourceUsage&lt;/span&gt;.Dynamic&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;indique que nous laissons&amp;nbsp;le driver décider ou placer le buffer contenant les données de la texture. En général si il y&amp;#39;a la place, celui-ci est placé dans la mémoire AGP, sinon dans la mémoire vidéo, sinon en dernier cas dans la RAM. Un bon jeu sais&amp;nbsp;se référer à la taille mémoire pour placer les textures les plus&amp;nbsp;utilisées en AGP et les autres moins importantes dans la RAM afin d&amp;#39;optimiser les affichages (nous vérrons celà dans la quatrième partie de cet apprentissage).&amp;nbsp;Le paramètre&lt;/font&gt;&amp;nbsp;&lt;font face="Courier New"&gt;&lt;span style="COLOR:teal;"&gt;SurfaceFormat&lt;/span&gt;.Color&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;indique simplement que&amp;nbsp;la texture aura un format de type 32 bits standard (ARGB : 8bits pour l&amp;#39;alpha, 8 pour la composante Rouge, 8 pour le vert et 8 pour le bleu, soit 256 variations par composantes). Enfin &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;.Manual&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;précise que nous gérons nous même la vie de la texture (a nous de la recréer lorsqu&amp;#39;elle est &amp;quot;perdue&amp;quot;. Vient ensuite le chargement des 6&amp;nbsp;LODs :&lt;/font&gt;&amp;nbsp; &lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture256 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\256&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture128 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\128&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture064 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\64&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture032 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\32&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture016 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\16&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt; texture008 = content.Load&amp;lt;&lt;span style="COLOR:teal;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="COLOR:maroon;"&gt;&amp;quot;MipmapTextures\\8&amp;quot;&lt;/span&gt;);&lt;/span&gt; 
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Rien de compliqué ici. La valeur&lt;/font&gt;&amp;nbsp;&lt;font face="Courier New" color="#800000"&gt;&amp;quot;256&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;est le nom Asset de la texture et&lt;/font&gt; &lt;span style="COLOR:maroon;"&gt;&lt;font face="Courier New"&gt;&amp;quot;MipmapTextures&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;le path vers celle-ci (voir premier projet au début de ce chapitre).&amp;nbsp;Les instructions qui suivent créént le Mipmap. Mais qu&amp;#39;est ce qu&amp;#39;un Mipmap sur le plan technique ? Il s&amp;#39;agit (pour parler simplement) d&amp;#39;une sorte de liste chainée. Chaque texture à l&amp;#39;intérieur possède pour taille la moitiée de son prédécesseur et est deux fois plus grande que son successeur directe. La première texture de cette liste à la taille la plus importante, la dernière la plus petite. Cette liste va être &amp;quot;ratachée&amp;quot; à une texture qui va faire office de &amp;quot;pointeur&amp;quot;. Suivant le degré de détail voulue, la texture va pointer sur telle ou telle élément de la liste.&amp;nbsp;Créer cette structure en Xna/C# est relativement aisé. Il nous suffit d&amp;#39;associer une texture (notre pointeur) à un ensemble de buffers correspondant aux différents LODs. C&amp;#39;est les méthodes&amp;nbsp;GetData et&amp;nbsp;SetData qui vont nous permettre cela. Prenons exemple du chargement du buffer correspondant au troisième LOD :&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;array = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;[64 * 64];&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;texture064.GetData&amp;lt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&amp;gt;(array);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mainTexture.SetData&amp;lt;&lt;span style="COLOR:blue;"&gt;uint&lt;/span&gt;&amp;gt;(2, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;, array, 0, array.Length, &lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;.None);&lt;/span&gt; 
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;Première instruction, nous créeons un array de uint (entier non signés) qui va faire office de&amp;nbsp;buffer. La seconde instruction charge ce buffer à partir des données de la texture&amp;nbsp;ayant pour taille 64 par 64. Enfin, la troisième instruction associe ce buffer au troisième LOD (index 2) de la texture &amp;quot;pointeur&amp;quot; (&lt;/font&gt;&lt;font face="Courier New"&gt;mainTexture&lt;/font&gt;&lt;font face="verdana,geneva"&gt;). Le premier paramètre de&amp;nbsp; correspond au niveau de LOD voulu, le second correspond à un objet de type&lt;/font&gt; &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;Rectangle&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;pour indiquer la zone du buffer que nous remplissons (ici&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;&lt;font face="Courier New"&gt;null&lt;/font&gt;&lt;/span&gt; &lt;font face="verdana,geneva"&gt;donc nous chargeons tout le buffer). Nous passons ensuite le buffer lui-même, indiquons à partir de quel index nous le lisons et sa taille. Le dernier paramètre de type&lt;/font&gt; &lt;span style="COLOR:teal;"&gt;&lt;font face="Courier New"&gt;SetDataOptions&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;spécifie la manière dont on écrase le buffer déjà associé à ce LOD (si il y&amp;#39;en a un) : supprimé,&amp;nbsp;comblé ou&amp;nbsp;surchargé (soit respectivement&lt;/font&gt;&amp;nbsp;&lt;span style="FONT-SIZE:10pt;COLOR:teal;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SetDataOptions&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.Discard, &lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;.NoOverwrite, &lt;span style="COLOR:teal;"&gt;SetDataOptions&lt;/span&gt;.None&lt;/span&gt;&lt;font face="verdana,geneva"&gt;).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;La partie LOD de notre programme est terminée ! Ne reste plus qu&amp;#39;à gérer le déplacement sur le terrain de jeu et la modification des différents filtres à l&amp;#39;aide des touches clavier. Pour cela, une simple analyse de la méthode&lt;/font&gt;&amp;nbsp;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Update&lt;/span&gt; &lt;font face="verdana,geneva"&gt;vous suffira à ce stade de cos connaissances. Avant de lancer le programme, jetez juste un oeil à la méthode&lt;/font&gt; &lt;font face="Courier New"&gt;LoadGraphicsContent&lt;/font&gt;&amp;nbsp;:&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; Load your graphics content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If loadAllContent is true, you should&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; load content from both ResourceManagementMode pools.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Otherwise, just&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; load ResourceManagementMode.Manual content.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;param name=&amp;quot;loadAllContent&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Which type of content to load.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; LoadGraphicsContent(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;bool&lt;/span&gt;&lt;font color="#000000"&gt; loadAllContent)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (loadAllContent)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:green;"&gt;// TODO: Load any ResourceManagementMode.Manual content&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.GenerateMipmapTexture();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.GenerateMipmap();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;.GenerateMipmapCase();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._terrain.Texture = _sampleMipmapColor;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Nous y plaçons le chargement de nos textures. Dans la mesure ou les 3 mipmaps sont chargés à l&amp;#39;aide de l&amp;#39;option&lt;/font&gt;&amp;nbsp;&lt;font face="Courier New"&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;.Manual&lt;/font&gt; &lt;font face="verdana,geneva"&gt;ce chargement se fait à l&amp;#39;extérieur du bloc conditionnel&lt;/font&gt; &amp;quot;&lt;font face="Courier New"&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (loadAllContent)&lt;/font&gt;&amp;quot;. &lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Il y&amp;#39;a deux&amp;nbsp;types d&amp;#39;appel à cette méthode dans&amp;nbsp;la vie d&amp;#39;une application Xna : le premier appel lors du lancement de l&amp;#39;application passe à cette méthode la valeur&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;&lt;font face="Courier New"&gt;true&lt;/font&gt;&lt;/span&gt;.&amp;nbsp;&lt;font face="verdana,geneva"&gt;De ce fait toutes les ressources sont chargés à la fois dans le bloc&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;&lt;font face="Courier New"&gt;if&lt;/font&gt;&lt;/span&gt; &lt;font face="verdana,geneva"&gt;et à l&amp;#39;extérieur. Le second appel intervient lorsqu&amp;#39;il y&amp;#39;a perte de ressources (après un redimentionnement ou une &amp;nbsp;réduction&amp;nbsp;de la fenêtre ... tout ce qui peut obliger le device graphique&amp;nbsp;à s&amp;#39;occuper d&amp;#39;une autre application au détriment de la notre), à ce moment là, Xna passe à la méthode&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;&lt;font face="Courier New"&gt;false&lt;/font&gt;&lt;/span&gt;.&amp;nbsp;&lt;font face="verdana,geneva"&gt;Seules les ressources en dehors du bloc conditionnel sont donc chargés : à ce stade les ressources&lt;/font&gt; &lt;font face="Courier New"&gt;&lt;span style="COLOR:teal;"&gt;ResourceManagementMode&lt;/span&gt;.Automatic&lt;/font&gt;&amp;nbsp;&lt;font face="verdana,geneva"&gt;ont déjà été rechargée automatiquement.Dans la même sens nous devons gérer nous même la libération de ces ressources dans la méthode&lt;/font&gt; &lt;font face="Courier New"&gt;UnloadGraphicsContent&lt;/font&gt;&amp;nbsp;:&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; Unload your graphics content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If unloadAllContent is true, you should&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; unload content from both ResourceManagementMode pools.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Otherwise, just&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; unload ResourceManagementMode.Manual content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Manual content will get&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; Disposed by the GraphicsDevice during a Reset.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;param name=&amp;quot;unloadAllContent&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Which type of content to unload.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; UnloadGraphicsContent(&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;bool&lt;/span&gt;&lt;font color="#000000"&gt; unloadAllContent)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (unloadAllContent == &lt;/font&gt;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;content.Unload();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._sampleMipmapAuto.Dispose();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._sampleMipmapColor.Dispose();&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;font color="#000000"&gt;._sampleMipmapTexture.Dispose();&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;là encore à l&amp;#39;extérieur du bloc conditionnel.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Pour preuve déplacez les quatres instructions de la méthode de chargement dans le bloc&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;&lt;font face="Courier New"&gt;if&lt;/font&gt;&lt;/span&gt;. &lt;font face="verdana,geneva"&gt;Lancez le programme et agrandissez la fenêtre : vous obtiendez une belle erreur spécifiant que le programme essaye d&amp;#39;accéder à une texture supprimée. Et pour cause au redimentionnement de la fenêtre les textures sont perdues et sont donc libérée de la mémoire. Lorsque le programme reprend la main il essaye d&amp;#39;utiliser ces textures pour l&amp;#39;affichage et plante forcement. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="3"&gt;&lt;strong&gt;L&amp;#39;application&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Les touches de l&amp;#39;application sont les suivantes :&amp;nbsp; la touche &amp;#39;A&amp;#39; pour anisotope, &amp;#39;L&amp;#39; pour linéaire, &amp;#39;P&amp;#39; pour point, &amp;#39;G&amp;#39; pour Gaussian, &amp;#39;Q&amp;#39; pour Pyramidal, &amp;#39;N&amp;#39; pour aucun. Si la touche Shift est appuyée en même temps, le filtre s&amp;#39;applique en magnification, sinon, en minification. Si la touche Alt est appuyée, le filtre s&amp;#39;applique au Mipmap. Les touches fléchées permettent de se déplacer dans le monde. Les touches Page Haut et Page Bas permettent de prendre de l&amp;#39;altitude et de redescendre. Enfin les touche + et - augmentent le paramètre MaxAnisotropy (voir plus haut). Les mêmes touches avec Shift appuyé modifient le LodBias (voir plus haut). La touche espace ajoute une grille qui permet de bien discerner les cases du terrain de jeu (en fait le terrain est affiché une deuxième fois en mode WireFrame). Enfin les touches F1, F2, F3 affichent respectivement les texture de couleur, sol, damier.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Au lancement de l&amp;#39;application, vous obtenez l&amp;#39;affichage suivant :&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622545/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Magnifiquement ... rouge, et pour cause : le mipmap n&amp;#39;est pas activé (None). Dans ce cas, le programme n&amp;#39;utilise que le LOD 0 qui correspond à la texture 256*256 qui est rouge. Appuyez sut les touches Alt et A pou lancer le mipmapping avec le filtre anisotropique. L&amp;#39;écran se change en :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622580/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;Les différentes strates que vous voyez là correspondent aux 6 textures de LOD que nous avons chargée. On remarque parfaitement que suivant la distance à la caméra, les différentes cases du terrain de jeu affichent une texture adaptée à leur taille à l&amp;#39;écran :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622649/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Maintenant en maintenant la touche Shift appuyée appuyez sur la touche + (Add). Ceci a pour conséquence d&amp;#39;augmenter le Bias et donc le passage au LOD suivant :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622651/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Shift avec la touche - (Substract) réduit au contraire le Bias et prolonge la vie du LOD 0 :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622652/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Le filtre mipmap que nous avons utilisé ici (Anisotropique) est sans doute le meilleur. Le passage d&amp;#39;un Lod à un autre se fait de manière progressive et douce. Prennez un chouïa d&amp;#39;altitude à l&amp;#39;aide de la touche Page Haut. Si vous affichez la grille à l&amp;#39;aide de la touche Espace vous rendrez compte que cette transition ne dépend absolument pas&amp;nbsp;de la case mais bien de la distance du &amp;quot;point&amp;quot; dans l&amp;#39;espace qui recoit la texture à la caméra :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622670/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Pour comprendre la puissance du filtre anisotropique, changez le filtre en filtre Point en appuyant sur les touches Alt + P. L&amp;#39;affichage qui apparait alors est rédibitoire ... :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622671/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Passons à un autre type de texture, la texture sol. Appuyez sur la touche F2 et annulez tout mipmaping à l&amp;#39;aide de la combinaisons Alt +&amp;nbsp; N. Vous obtenez l&amp;#39;affichage suivant :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622693/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Aucun mipmapping et aucun filtre en mignification donne un résultat plus que décevant. Améliorons tout cela : Ajoutez un mipmapping avec filtre point (combinaison Alt + P) :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622695/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;L&amp;#39;affichage est meilleur mais comme le montrent les deux lignes rouges nous voyons parfaitement les lignes de transition entre un Lod et un autre (avec la texture de couleur c&amp;#39;est encore plus flagrant). Et pour cause : le filtre point pour le mipmapping est des plus simples : lorsqu&amp;#39;il y&amp;#39;a besoin de faire une transition vers un autre LOD il utilise directement les texels de la texture voulue sans essayer de rendre la transition progressive. Si vous vous déplacez à l&amp;#39;aide des touches fléchées vous remarquez encore mieux cette transition. Nous pouvons toujours appliquer un filtre lineaire en mignification (touche L) :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622712/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;mieux, mais la transition est toujours visible... Si on applique maintenant un filtre linaire pour le mipmapping (Alt + L), le rendu est quasi parfait : &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622696/original.aspx" width="635" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;On parle dans le cas du mipmapping avec filtre linaire de &amp;quot;filtrage trilineaire&amp;quot;. Ce filtrage effectue une moyenne progressive entre les texels des textures concernées par la transitions d&amp;#39;un LOD à un autre. Même si vous vous déplacez, vous ne verrez pas la transition d&amp;#39;un LOD à un autre. A noter que le filtre trilinaire ou le filtre anisotropique donnent pratiquement le même résultat dans la mesure où nous affichons des formes relativement &amp;quot;droites&amp;quot;.&lt;/p&gt;
&lt;p&gt;Revenez à un affichage sans filtre (touche N et shift N) et sans mipmapping (touche Alt + N). Affichez la texture Damier avec F3 :&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622749/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;On voit que l&amp;#39;affichage n&amp;#39;arrive absolument pas a gérer les lignes horizontales et verticales de la texture. Combien même vous affichez un filtre Linaire en mignification et magnification on garde un affichage desastreux.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622750/original.aspx" width="635" border="2" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;mais si vous appliquez un&amp;nbsp;filtre mipmapping en anisotropie l&amp;#39;affichage est parfait :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="WIDTH:635px;HEIGHT:634px;" height="634" src="http://msmvps.com/photos/valentin/images/622751/original.aspx" width="635" align="absMiddle" border="2" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;Nous en avons terminé avec le mipmapping. Un point très important pour la fluidité et la beauté de nos applications 3D. Continuez à vous familiariser avec cette application qui met parfaitement en évidence les filtres de mignification et magnification et les filtres de mipmapping.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva" size="4"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&lt;span style="COLOR:teal;"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:teal;"&gt;&lt;font color="#000000"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;&lt;font face="verdana,geneva"&gt;&lt;img title="telecharger" style="WIDTH:24px;HEIGHT:24px;" height="24" alt="telecharger" src="http://www.adcworks.com/images/content/icon-download.gif" width="24" align="middle" /&gt;&amp;nbsp;Vous pouvez télécharger le sample, les deux moteurs et les exercices &lt;/font&gt;&lt;a class="" href="http://msmvps.com/files/folders/valentin/entry582110.aspx" target="_blank"&gt;&lt;font face="verdana,geneva"&gt;ici&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" color="#000000"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font face="verdana,geneva"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;img style="WIDTH:24px;HEIGHT:24px;" height="24" src="http://msmvps.com/photos/valentin/images/887626/original.aspx" width="24" align="absMiddle" border="1" alt="" /&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;Retourner au &lt;/font&gt;&lt;a class="" href="http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;sommaire des cours&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;/font&gt;&lt;/span&gt;&lt;em&gt;&lt;strike&gt;&lt;font face="verdana,geneva"&gt;&amp;lt;/ en construction / under construction&amp;gt;&lt;/font&gt;&lt;/strike&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="verdana,geneva"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=570799" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/LOD/default.aspx">LOD</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Blend/default.aspx">Blend</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Special+Effects/default.aspx">Special Effects</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Filter/default.aspx">Filter</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Mipmap/default.aspx">Mipmap</category></item><item><title>Les MipMaps</title><link>http://msmvps.com/blogs/valentin/archive/2007/01/12/les-mipmaps.aspx</link><pubDate>Fri, 12 Jan 2007 13:06:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:486055</guid><dc:creator>valentin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=486055</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2007/01/12/les-mipmaps.aspx#comments</comments><description>&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les mipmaps permettent une amélioration flagrante de la qualité de rendu des textures en fonction de leur distance par rapport à la position de la caméra qui filme la scène. Prenons la place d’un programme de jeu qui veut afficher un mur. Ce dernier utilisera un cube avec une texture de mur. Etant très maniaque ce programmeur va utiliser une texture de grande qualité afin d’obtenir un mur réaliste. Certes pour une vue de près l’effet voulu sera réussit, mais imaginez le gâchis pour une vue de loin&amp;nbsp;: non seulement Direct3D va tenter d’afficher la forme avec une texture importante, en réduisant sa taille arbitrairement le tout pour un rendu moyen. Quelle perte de performance et de qualité&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il aurait mieux valu, lorsque la caméra s’éloigne faire en sorte que une texture deux fois moins grande soit utilisée. Moins grande certes mais réalisée par le programmeur ou selon les désires du programmeur&amp;nbsp;! &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pourquoi créer ses propres textures alors&amp;nbsp;les filtres pouvaient aisément réduire une image. Tout simplement parce que les filtres ne sont pas intelligents&amp;nbsp;: ils réalisent leur tâche bêtement sans se soucier du contenu de la texture ni de l’information qu’elle véhicule. Faites ce test&amp;nbsp;: ouvrez votre logiciel de dessin, créez une image avec un texte et réduisez le de 50% avec un filtre bilinéaire.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Vous obtenez quelque chose de la sorte&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;IMG src="http://msmvps.com/photos/valentin/images/486000/original.aspx" align=absMiddle border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;Figure&amp;nbsp;1 — En bas 50% en bilinéaire&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’altération de l’information est flagrante&amp;nbsp;! Aucun filtre ne peut avoir une vue globale de la texture dans la mesure où ils travaillent au niveau des pixels. Dans le même sens aucun filtre ne peut quantifier l’information véhiculée par la texture et tenter de la sauvegarder au détriment des informations moins importantes.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’homme, lui, le peut … A lui de créer les différentes textures correspondant à cette perte d’information. Il doit déterminer à partir de quel point le message de la texture devient illisible et créer une nouvelle texture adaptée qui continue à donner le message dans une nouvelle échelle. Au processus de mipmapping de substituer la texture originelle par la nouvelle texture plus petite quand cela devient nécessaire.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:467px;HEIGHT:272px;" height=272 src="http://msmvps.com/photos/valentin/images/486003/original.aspx" width=467 align=absMiddle border=2&gt;&lt;BR&gt;Figure 2 — La texture réduite à la main est plus lisible.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=3&gt;1 Présentation&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’ensemble des textures successivement réduites forme un Mipmap. MIP correspond à «&amp;nbsp;Multi in parvo&amp;nbsp;» en latin, c'est-à-dire «&amp;nbsp;de nombreuse chose au même endroit&amp;nbsp;». Chaque texture de cet ensemble est un niveau de MIPmap ou LOD (Level Of Detail). Chaque niveau doit avoir pour hauteur et largeur la moitié de la hauteur et largeur du niveau précédent. Le dernier niveau a bien évidemment au moins un coté égal à 1. Sachant que la taille conseillée pour une texture est de 256 pixels il y’a donc au maximum 9 LOD (256 puis&amp;nbsp;128 puis 64, 32, 16, 8, 4, 2 et 1).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Le mipmapping est très utile dans la mesure ou il permet de préserver l’information dans le sens voulu par le développeur mais aussi en évitant à la carte graphique l'affichage de grosses textures lorsque ce n'est pas nécessaire.&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:22pt 0cm 12pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;&lt;FONT size=2&gt;Filtre trilinéaire et mipmapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les transitions entre les différents LOD sont souvent visibles lorsqu’on regarde au loin. Le processus de mipmapping est heureusement capable de filtrer deux niveaux de mipmap consécutif pour en calculer la moyenne de couleur. La transition devient pratiquement invisible. Il s’agit là du filtre bilinéaire, mais, dans la mesure où il porte sur une transition entre deux texture on parle de filtrage trilinéaire.&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:22pt 0cm 12pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times size=2&gt;LOD bias&lt;/FONT&gt;&lt;/SPAN&gt;&lt;A class="" title=_ftnref1 style="mso-footnote-id:ftn1;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftn1" name=_ftnref1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-SIZE:15pt;FONT-FAMILY:Times;mso-ansi-language:EN-US;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=2&gt;[1]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=5&gt;&lt;FONT face=Times&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il arrive que pour la beauté du jeu il faille garder un LOD plus longtemps que prévu en retardant le passage à un LOD inférieur lorsque la caméra s’éloigne. C’est le LOD bias qui permet de réaliser cette opération. Si une surface s’éloigne de l’utilisateur, augmenter le LOD bias revient à retarder l’utilisation du LOD inférieur. Au contraire, en diminuant sa valeur, on passe plus rapidement aux LOD inférieurs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;STRONG&gt;2. Notre Sample&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=2&gt;Pour mettre en évidence tout ce que nous venons d’apprendre, rien de tel qu’un bon exemple en 3D. Tout comme le code précédent, nous allons faire en sorte de pouvoir modifier toutes les propriétés liées au mipmapping par l’intermédiaire des touches F1 à F8. Un mipmap est un ensemble de texture dont la taille décroît. Il est nécessaire de créer cet ensemble. Pour cela les textures suivantes seront utilisées :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;IMG style="WIDTH:800px;HEIGHT:600px;" height=600 src="http://msmvps.com/photos/valentin/images/486026/original.aspx" width=800 align=absMiddle border=2&gt; 
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=2&gt;Figure 3—Textures de couleurs...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Il s’agit d’une série d’image en couleur dont la taille décroît. Les couleurs permettront d’aisément discerner les différents LOD lors des modifications effectuées par l’utilisateur dans le programme. De plus pour avoir une idée plus précise du rendu à l’écran, un autre mipmap sera utilisé, cette fois ci pas de couleur, mais un motif&amp;nbsp;: un sol pavé.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&lt;IMG style="WIDTH:800px;HEIGHT:600px;" height=600 src="http://msmvps.com/photos/valentin/images/486025/original.aspx" width=800 align=absMiddle border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Figure 4— …Textures de sol.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pour l’affichage, un plan fixe formé de 25*25 cases sera dessiné à l’écran. De même , un petit moteur de déplacement à la manière des Quake like sera programmé dans le but de pouvoir déplacer la caméra et admirer les conséquences sur les modifications de LOD.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Prêt&amp;nbsp;? C’est parti&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;3. Etude du code source&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le fichier principal commence par la déclaration de deux structures&amp;nbsp;: une structure Vertex définissant les propriétés des vertex utilisés dans le programme, et une énumération nommée Filtres qui nous permettra de donner un nom aux filtres voulus par l’utilisateur dans le programme.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Vient ensuite la déclaration de 4 Textures&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// Texture pour le mipmapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;Texture textureMipMappingCouleur;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// Texture pour le mipmapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;Texture textureMipMappingSolContour;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// Texture pour le mipmapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;Texture textureMipMappingSolPur;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;/// Texture pour le mipmapping actuellement utilisée&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;Texture texture;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;TEXT-INDENT:0cm;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ces textures sont en fait des mipmap. Elles posséderont différents LOD. En fait une texture simple est un mipmap avec un seul LOD&amp;nbsp;: le niveau 0. Nous aurons un mipmap pour l’étude sur les textures colorisées, un mipmap pour l’étude sur des textures de sol avec contour, et encore un pour les textures de sol sans contour. La dernière texture est en fait le mipmap actuellement affiché par le programme. Il pointera sur l’un des trois mipmap précédemment énumérés.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Terminons les déclarations par différentes variables de sauvegarde des paramétrages de l’utilisateur dans sa découverte du mipmapping&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// Filtres de base, on commence en linéaire&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;Filtres&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;magFilterType&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= Filtres.Linear;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;Filtres&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;minFilterType&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= Filtres.Linear;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;Filtres&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;mipFilterType&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= Filtres.Linear;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// Niveau d'anisotropy&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;int&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;anisotropy&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;= 1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// Level de détail à utiliser&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;float mipMapLodBias = 0.0f;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// Inidique qu'une mise à jour doit être faite&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;bool mettreAJour = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Trois variables de type Filtre pour les filtres utilisés avec la magnification, minification et le mipmap. Le niveau de l’anisotropie, la valeur du LOD bias. Un booléen enfin pour déterminer si l’utilisateur a modifié quelque chose.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ce sont ChargementTexturesEtMipMap() et ChargementTexturesMipMap() qui vont initialiser les mipmap.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La première se présente ainsi&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/// Charge les mipmap couleur, sol contour, et sol pur&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public void ChargementTexturesEtMipMap()&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.textureMipMappingCouleur = CreateTexture( device, "base.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;this.textureMipMappingSolContour = CreateTexture( device, "scbase.bmp", Format.A8R8G8B8);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.textureMipMappingSolPur = CreateTexture( device, "sbase.bmp", Format.A8R8G8B8);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ChargementTexturesMipMap(textureMipMappingCouleur, "");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ChargementTexturesMipMap(textureMipMappingSolContour, "sc");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ChargementTexturesMipMap(textureMipMappingSolPur, "s");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.texture = this.textureMipMappingCouleur;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Elle créé les trios textures vue précédemment avec base.bmp, scbase.bmp et sbase.bmp. Chaque texture dans le programme possède le même nom mais avec un préfixe différent&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;FONT face=Times&gt;Pas de préfixe pour les textures du mipmap colorisé&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;FONT face=Times&gt;«&amp;nbsp;sc&amp;nbsp;» pour le mipmap sol avec contour&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;FONT face=Times&gt;«&amp;nbsp;s&amp;nbsp;» pour le sol pur.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Ces trois initialisations ne servent qu’à créer la texture car en fait leur contenu sera effacé par les différents LOD du mipmap.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Les trois instructions suivantes chargent le mipmap de chacun d’entre elles&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;ChargementTexturesMipMap(textureMipMappingCouleur, "");&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;ChargementTexturesMipMap(textureMipMappingSolContour, "sc");&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;ChargementTexturesMipMap(textureMipMappingSolPur, "s");&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;La méthode ChargementTextureMipMap créée dans notre programme accepte en paramètre, la texture a charger en mipmap et le préfixe des textures à charger.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;La méthode se termine enfin en faisant pointer la propriété texture sur le mipmap qui sera affiché au démarrage.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Analysons ChargementTexturesMipMap&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/// Chargement des textures mipmap&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public void ChargementTexturesMipMap(Texture mipmap, string préfixe)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Texture[] textures = new Texture&lt;img src="http://msmvps.com/emoticons/emotion-14.gif" alt="Devil" /&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Charge nos 6 textures&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[0] = CreateTexture( device, préfixe +"256.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[1] = CreateTexture( device, préfixe +"128.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[2] = CreateTexture( device, préfixe +"64.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[3] = CreateTexture( device, préfixe +"32.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[4] = CreateTexture( device, préfixe +"16.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures[5] = CreateTexture( device, préfixe +"8.bmp", Format.A8R8G8B8);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//création des surfaces pour le copier/coller&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Surface destination = null;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Surface source&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= null;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;int i;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for( i = 0; i &amp;lt; 6; ++i )&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//pointer sur la surface texture du LOD i&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;destination = texture.GetSurfaceLevel(i);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//pointer vers la surface de la texture i&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;source = textures&lt;img src="http://msmvps.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.GetSurfaceLevel(0);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//charger dans destination la source, sans filtre&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SurfaceLoader.FromSurface(destination, source, Filter.None, 0); &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Libérer les textures temporaires utilisées&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for( i = 0; i &amp;lt; 6; ++i )&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textures&lt;img src="http://msmvps.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.Dispose();&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La méthode commence par charger dans un tableau de 6 textures les six LOD du mipmap. Elle va ensuite, charger à chaque LOD du mipmap passé à la méthode les 6 textures chargées&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for( i = 0; i &amp;lt; 6; ++i )&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//pointer sur la surface texture du LOD i&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;destination = mipmap.GetSurfaceLevel(i);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//pointer vers la surface de la texture i&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;source = textures&lt;img src="http://msmvps.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.GetSurfaceLevel(0);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//charger dans destination la source, sans filtre&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SurfaceLoader.FromSurface(destination, source, Filter.None, 0); &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pour les 6 itérations, on fait pointer destination sur le LOD du mipmap. On fait pointer source sur le LOD 0 de la texture de la case du tableau lu. Chaque texture de ce tableau n’est pas un mipmap et une seule texture, il n’y a donc qu’un LOD&amp;nbsp;: celui du niveau 0. A l’aide de la méthode FromSurface de la classe utilitaire SurfaceLoader on place dans destination le contenu de source. Le tout sans filtrage et avec une clé de couleur de transparence noire (la valeur 0). En gros cette boucle chaque dans le mipmap a chacun des 6 LOD, les 6 textures chargées au départ.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Cette opération étant effectuée, on peut libérer la mémoire prise par le tableau.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;La création de mipmap est une opération relativement facile (on perd plus de temps à créer les textures des LOD&amp;nbsp;!). Pourquoi s’en passer quand on voit le gain de performances et de qualité visuelle&amp;nbsp;?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Encarttexte style="MARGIN:6pt 1cm 1pt 2cm;"&gt;&lt;FONT face=Times&gt;&lt;STRONG&gt;Remarque&lt;/STRONG&gt;&amp;nbsp;: Pour déterminer le nombre de level d’un mipmap utilisez la propriété LevelCount de cette manière&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Encarttexte style="MARGIN:6pt 1cm 1pt 2cm;"&gt;&lt;FONT face=Times&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int nombreLOD = mipmap.LevelCount;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Trois méthodes, travaillent sur le sampler. Elles se présentent comme ceci&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;private void SetMagnificationFilter()&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;{&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if( this.magFilterType == Filtres.None )&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;this.device.SetSamplerState(0, SamplerStageStates.MagFilter, (int)TextureFilter.None);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if( this.magFilterType == Filtres.Point )&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.SetSamplerState(0, SamplerStageStates.MagFilter, (int)TextureFilter.Point);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if( this.magFilterType == Filtres.Linear )&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.SetSamplerState(0, SamplerStageStates.MagFilter, (int)TextureFilter.Linear);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if( this.magFilterType == Filtres.Anisotropic )&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.SetSamplerState(0, SamplerStageStates.MagFilter, (int)TextureFilter.Anisotropic);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Il existe aussi 2 autres méthodes similaires SetMinificationFilter et SetMipMapFilter qui travaillent de la même manière.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Les modifications sont effectuées par le groupe d’instructions&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.SetMinificationFilter();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.SetMagnificationFilter();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.SetMipMapFilter();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;device.SetSamplerState(0, SamplerStageStates.MaxAnisotropy, anisotropy );&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;device.SetSamplerState(0, SamplerStageStates.MipMapLevelOfDetailBias, mipMapLodBias );&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.Text = "Minification = " + this.minFilterType + " | Magnification = " + this.magFilterType + " | MipMap = " + this.mipFilterType + " | MaxAnisotropy = " + anisotropy + "|LOD = " + mipMapLodBias;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les trois appels de methodes vues précédemment, suivit par deux modifications du sampler pour mettre à jour l’anisotropie et le LOD bias.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La dernière instruction mets à jour le titre de la fenêtre pour pouvoir connaître l’état des filtres.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;4.&amp;nbsp;Touches de l’exécutable&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Page Haut/Bas&amp;nbsp;: Déplacement en hauteur.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Flèches gauche/droite&amp;nbsp;: Tourner la tête.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Flèches haut/bas&amp;nbsp;: avancer/reculer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;+/-&amp;nbsp;: Regarder en haut/en bas&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Touche numérique 1/2/3&amp;nbsp;: Mipmap colorisé/sol avec contour/sol pur.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F1&amp;nbsp;: modification du filtre de minification.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F2&amp;nbsp;: modification du filtre de magnification.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F3&amp;nbsp;: modification du filtre de mipmapping.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F4/F5&amp;nbsp;: modification du LOD bias.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F6/F7&amp;nbsp;: modification de la valeur de l’anisotropie.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;5.&amp;nbsp;Etude de l’exécutable&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Le code du programme étant compris voyons ce qu’il peut nous apporter. Lancez le, l’écran au démarrage devrait être le suivant&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&lt;IMG style="WIDTH:648px;HEIGHT:514px;" height=514 src="http://msmvps.com/photos/valentin/images/486038/original.aspx" width=648 align=absMiddle border=2&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Figure 5—On remarque bien les plans translatés et le mipmapping&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;En se déplaçant en avant en arrière on remarque les ondes des LOD suivre et s’avancez ou reculer. De même en s’approchant du sol, les LOD avec les index les plus petit (dont les plus détaillés) apparaissent (notamment la texture rouge et bleu). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;En hauteur, la touche F1 qui modifie le filtre de minification agit. Le filtre point effectue ainsi une opération de mauvaise qualité. La minification agit car en hauteur les différents plans du sol ont une taille inférieure à la taille de la texture. Au sol si la minification ne fait rien, au contraire la magnification agit. Même remarque&amp;nbsp;: le filtre point dégrade l’affichage (dommage, c’est le plus rapide).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;IMG style="WIDTH:261px;HEIGHT:319px;" height=319 src="http://msmvps.com/photos/valentin/images/486039/original.aspx" width=261 align=absMiddle border=2&gt;&lt;BR&gt;Figure 6—Point et Lineaire … le choix est aisé.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Jouons maintenant avec le mipmapping (touche F3). Si nous prenons le filtre None (qui desactive le mipmapping) évidemment le sol devient rouge&amp;nbsp;: il n’y a plus qu’une texture dans le mipmap. Avec le filtre point, on obtient un affichage certes hideux, mais très intéressant dans la mesure où on détermine bien les différents LOD. On peut passer en mode sol pur pour discerner au mieux l’effet dans un jeu. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&lt;IMG style="WIDTH:384px;HEIGHT:600px;" height=600 src="http://msmvps.com/photos/valentin/images/486041/original.aspx" width=384 align=absMiddle border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Figure 7—Le mipmapping en mode point est … à éviter.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Avec un filtre Linéaire ou Anisotropique les différences de LOD s’estompent. Jouons maintenant pour terminer avec le LOD bias. Il permet de retarder ou s’accélérer le passage à un autre LOD.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;BR&gt;&lt;IMG style="WIDTH:648px;HEIGHT:514px;" height=514 src="http://msmvps.com/photos/valentin/images/486043/original.aspx" width=648 align=absMiddle border=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Figure&amp;nbsp;8 —LOD bias = 0&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;FONT face=Times&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;IMG style="WIDTH:648px;HEIGHT:514px;" height=514 src="http://msmvps.com/photos/valentin/images/486047/original.aspx" width=648 align=absMiddle border=2&gt;&lt;BR&gt;Figure 9—LOD bias = 1&amp;nbsp;: on est plus rapidement à des LOD moins détaillés&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&lt;IMG style="WIDTH:648px;HEIGHT:514px;" height=514 src="http://msmvps.com/photos/valentin/images/486048/original.aspx" width=648 align=absMiddle border=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Figure 10—LOD bias = -3&amp;nbsp;: le LOD détaillé en face reste affiché à une distance plus élevé de la caméra.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Ce petit programme d’exemple devrait encore avoir éclaircit nombre de point difficiles à assimiler (notamment les filtres). Quelqu’un qui maîtrise bien les fonctionnalités de cet utilitaire pourra tenter de discerner les nuances des filtres plus seulement avec le mipmap colorisé.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&lt;STRONG&gt;Télécharger le Sample&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;IMG title=telecharger style="WIDTH:24px;HEIGHT:24px;" height=24 alt=telecharger src="http://www.adcworks.com/images/content/icon-download.gif" width=24 align=middle&gt;&amp;nbsp;&lt;FONT face="times new roman,times"&gt;Vous pouvez télécharger le sample&lt;/FONT&gt; &lt;A class="" href="http://msmvps.com/files/folders/valentin/entry486200.aspx" target=_blank&gt;&lt;FONT face="times new roman,times" color=#000000&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="times new roman,times" color=#000000&gt;.&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;DIV style="mso-element:footnote-list;"&gt;&lt;BR&gt;&lt;FONT face=Times size=3&gt;
&lt;HR align=left&gt;
&lt;/FONT&gt;
&lt;DIV id=ftn1 style="mso-element:footnote;"&gt;
&lt;P class=MsoFootnoteText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;A class="" title=_ftn1 style="mso-footnote-id:ftn1;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftnref1" name=_ftn1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;[1]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times&gt; Bias peut être traduit par&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;correction ou affinage ici..&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=486055" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Optimization/default.aspx">Optimization</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/LOD/default.aspx">LOD</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Direct+3D/default.aspx">Direct 3D</category></item><item><title>Le multitexturing</title><link>http://msmvps.com/blogs/valentin/archive/2007/01/11/le-multitexturing.aspx</link><pubDate>Thu, 11 Jan 2007 14:05:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:484555</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=484555</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2007/01/11/le-multitexturing.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Le multitexturing est le processus qui permet le mélange contrôlé de plusieurs textures sur une même surface 3D. &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;Direct3D permet de mélanger jusqu’à huit étapes (ou étage/stage) correspondant à 8 textures superposées. Chacune correspond à un processus de tex&lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;ture blending qui détermine la couleur d’un pixel en mélangeant les couleurs de la texture de l’étape courante aux couleurs de l’étape précédente. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Quelque soit le stage sur lequel il s'effectue, le&amp;nbsp;blend est une opération qui prend en entrée 8 paramètres :&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Trois arguments pour le calcul de la couleur RGB.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Trois arguments pour le calcul de la composante Alpha,&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Une opération pour calculer la couleur RGB&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Une opération pour la composante alpha.&lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;En résultat on obtient deux valeurs : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Une couleur RGB.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="times new roman,times"&gt;Une composante alpha (transparence). &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;Les arguments appartiennent à l’énumération &lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;TextureArgument&lt;/STRONG&gt;&lt;/FONT&gt;, les opérations à &lt;FONT face="courier new,courier"&gt;TextureOperation&lt;/FONT&gt;. S&lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;es membres les plus courants sont :&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Subtract&lt;/STRONG&gt; : Soustrait les données graphiques du second argument au premier argument. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;SRGBA = Arg1 - Arg2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Lerp&lt;/STRONG&gt; : Réalise une interpolation linéaire entre le second et le troisième argument suivant une proportion décrite dans le premier argument.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = (Arg1) * Arg2 + (1- Arg1) * Arg3.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;MultiplyAdd&lt;/STRONG&gt; : Réalise une multiplication de deux derniers arguments sur 3 trois donnés à laquelle on additionne le premier argument pour créer la sortie.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;SRGBA = Arg1 + Arg2 *Arg3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;DotProduct3&lt;/STRONG&gt; : Multiplie chaque composante RGB des deux arguments et les additionne entre eux.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;SRGBA = (Arg1R * Arg2R + Arg1G * Arg2G + Arg1B * Arg2B)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;BlendTextureAlpha&lt;/STRONG&gt; : Réalise un mélange linéaire des composantes alpha de l’étage courant avec le résultat des étapes supérieures.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = Arg1 * (Alpha) + Arg2 * (1 - Alpha)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;BlendDiffuseAlpha&lt;/STRONG&gt; : Réalise un mélange linéaire entre l’étage supérieur et l’étage courant. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = Arg1 * (Alpha) + Arg2 * (1 - Alpha)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;AddSmooth&lt;/STRONG&gt; : Additionne les arguments 1 et 2 puis soustrait leur produit pour donner la sortie.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = Arg1 + Arg2 - Arg1 * Arg2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;AddSigned2X&lt;/STRONG&gt; : Additionne les texels des de l’étage supérieur avec l’étage courant pour la sortie avec une correction de 0.5 et un décalage de bits de 1 vers la gauche (multiplication par 2).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = (Arg1 + Arg2 - 0.5) &amp;lt;&amp;lt; 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;AddSigned&lt;/STRONG&gt; : Additionne les texels des de l’étage supérieur avec l’étage courant pour la sortie avec une correction de 0.5.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = Arg1 + Arg2 -0.5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Add&lt;/STRONG&gt; : Additionne les texels des de l’étage supérieur avec l’étage courant pour la sortie. RGBA = Arg1 + Arg2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Modulate4X&lt;/STRONG&gt; : Multiplie les texels des de l’étage supérieur avec l’étage courant puis décale les bits de 2 vers la gauche (provoquant une multiplication par 4) pour la sortie. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = (Arg1 * Arg2) &amp;lt;&amp;lt; 2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Modulate2X&lt;/STRONG&gt; :&amp;nbsp; Multiplie les texels des de l’étage supérieur avec l’étage courant puis décale les bits de 1 vers la gauche (provoquant une multiplication par 2) pour la sortie. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RGBA = (Arg1 * Arg2) &amp;lt;&amp;lt; 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Modulate&lt;/STRONG&gt; : Multiplie les texels des de l’étage supérieur avec l’étage courant pour créer la sortie. RGBA = Arg1 * Arg2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;SelectArg2&lt;/STRONG&gt; : Prend en compte le second argument de l’étage courant portent sur la couleur ou la composante alpha pour créer la sortie. RGBA = Arg2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;SelectArg1&lt;/STRONG&gt; : Prend en compte le premier argument de l’étage courant portent sur la couleur ou la composante alpha pour créer la sortie. RGBA = Arg1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Disable&lt;/STRONG&gt; : Désactive la sortie de l'étage courant et de tous les étages d'un niveau supérieur. Pour désactivier le mapping de texture, il suffit de donner ce drapeau pour l’étage 0. Les opération sur la composante alpha ne peut être désactivée lorsque les opérations sur les couleurs sont activée. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Reportez vous à l’aide du SDK pour les autres membres non explicités ici. &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;Les membres les plus courants de &lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;TextureOperation&lt;/STRONG&gt;&lt;/FONT&gt; sont :&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;TextureColor&lt;/STRONG&gt; : Contient les couleurs de l’étage courant.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Current&lt;/STRONG&gt; : Renvoie l’élément de l’étage precedent (si un seul étage dans le multitexturing, l’argument est equivalent à Diffuse). &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;Diffuse&lt;/STRONG&gt; : Pixels dont la valeur est obtenue via une interpolation bilinéaire des sommets de la primitive en gouraud. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Reportez vous à l’aide du SDK pour les autres membres non explicités ici. &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;Les possibilités de calculs et de mélange sont donc infinies, la difficulté de comprend les possibilités des calculs est importante. Là encore, comme pour l’usage des filtres, on peut s’en sortir facilement au départ en tâtonnant jusqu’à obtenir l’effet souhaité. Avec le temps, les mécanismes suivront. &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;Plutôt que de s’engager dans une pléthore d’exemples pour les mettre en valeur, j'ai développé un petit programme fort utile qui permet, via une interface Windows très simple de s’amuser en testant toutes les opérations avec tous les arguments possibles pour déterminer quel résultat cela pouvait avoir à l’écran.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title="Une application qui simplifiait la vie" style="WIDTH:634px;HEIGHT:417px;" height=417 alt="Une application qui simplifiait la vie" src="http://msmvps.com/photos/valentin/images/484556/original.aspx" width=634 align=absMiddle border=2&gt;&lt;BR&gt;Figure 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Cerise sur le gâteau, notre programme donne le code source à mettre dans son programme pour avoir un multitexturing paramétré. &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;C’est une copie, en C# d’un utilitaire présent dans les précédentes versions du SDK DirectX qui a été curieusement supprimé aujourd’hui. Le gain de temps que ce logiciel procurait au développeur était faramineux : avant, il fallait sans arrêt compiler son programme après avoir modifié une étape du multitexturing pour observer le résultat à l’écran. On perdait beaucoup de temps. Avec lui, un simple click suffit pour tester.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;&lt;STRONG&gt;&amp;nbsp;Le programme&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="times new roman,times"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Au lancement nous avons l’écran suivant&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title="...en C#" style="WIDTH:634px;HEIGHT:417px;" height=417 alt="...en C#" src="http://msmvps.com/photos/valentin/images/484558/original.aspx" width=634 border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;Figure&amp;nbsp;2&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Seules trois étages peuvent donc être paramétrées sur les 8 possibles. En fait 99% des multitexturing portent sur un nombre d’étages inférieur ou égal à 3. C’est donc bien suffisant.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;On voit en faisant défiler le contenu du combo box ColorOP ou AlphaOP qu’il y’a 25 fonctions de mélange (énumération TextureOperation). Pour ces opérations de 1 à trois arguments doivent être fournis prenant une valeur parmi 10 choix possibles (TextureArgument). Tout ceci existe pour chaque étape du multitexturing. Les possibilités sont donc trop nombreuses pour pouvoir être toutes données dans ce tutorial. Nous ne verrons que quelques effets.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Pour reproduire l’effet lumineux d'un sport sur une texture, il faut charger en texture de stage 2 spolite.bmp du répertoire de l’exécutable et configurer le second stage comme ceci&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;Figure 3— les texels blancs du spot se superposent aux texels du mur et les eclaircissent&amp;nbsp;: le mur semble éclairé&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;En cliquant sur le bouton «&amp;nbsp;View code&amp;nbsp;» on obtient&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;public void SetTexturesStages(Microsoft.DirectX.Direct3D.Device device)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//texture stage : 0 Fichier image : env2.bmp&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/////////////////////&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[0].ColorOperation = TextureOperation.SelectArg1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[0].AlphaOperation = TextureOperation.SelectArg1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[0].AlphaArgument1 = TextureArgument.TextureColor;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[0].ResultArgument = TextureArgument.Current;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//texture stage : 1 Fichier image : spotlite.bmp&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/////////////////////&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[1].ColorOperation = TextureOperation.Modulate;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[1].ColorArgument1 = TextureArgument.TextureColor;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[1].ColorArgument2 = TextureArgument.Current;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[1].AlphaOperation = TextureOperation.Disable;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[1].ResultArgument = TextureArgument.Current;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//texture stage : 2 Fichier image : env3.bmp&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/////////////////////&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[2].ColorOperation = TextureOperation.Disable;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;device.TextureState[2].AlphaOperation = TextureOperation.Disable;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="times new roman,times"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Il s’agit du code généré par l’application pour créer le multitexturing, visible dans l’utilitaire, à l’intérieur de nos programmes.&amp;nbsp; Nous spécifions &lt;/FONT&gt;&lt;FONT face="times new roman,times"&gt;l’étage pour lequel les arguments et opérations donnés sont destinés (ici donné sous la forme d’un index de tableau), l’opération (&lt;FONT face="courier new,courier"&gt;&lt;EM&gt;ColorOperation&lt;/EM&gt;&lt;/FONT&gt; et &lt;FONT face="courier new,courier"&gt;&lt;EM&gt;AlphaOperation&lt;/EM&gt;&lt;/FONT&gt; ) de type &lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;TextureOperation&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;et les arguments liés de type &lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;TextureArgument&lt;/STRONG&gt;&lt;/FONT&gt; (voir la figure 3).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Pour reproduire une case de monde de Warcraft avec une portion de terre et une portion d’herbe au dessus comme ceci&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;IMG title="Trouver comme faire un tel affichage avec cette application est simple" style="WIDTH:587px;HEIGHT:478px;" height=478 alt="Trouver comme faire un tel affichage avec cette application est simple" src="http://msmvps.com/photos/valentin/images/484557/original.aspx" width=587 border=2&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;Figure 4&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant style="MARGIN:0cm 0cm 1pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;On chargera en texture stage 2&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;IMG title="On voit le résultat dynamiquement" style="WIDTH:634px;HEIGHT:417px;" height=417 alt="On voit le résultat dynamiquement" src="http://msmvps.com/photos/valentin/images/484559/original.aspx" width=634 align=absMiddle border=2&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face="times new roman,times"&gt;Figure&amp;nbsp;5&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Dans tous les cas pas d’inquiétudes face à toutes ses possibilités de calculs. Personne ne peut vraiment prétendre maîtriser toutes ces opérations ou les comprendre. Seul le temps peut permet de s’en sortir avec plus ou moins de facilité. Toujours se reporter aux exemples de code source trouvé sur Internet ou bien à l’utilitaire présenté ici pour trouver l’effet voulu.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;STRONG&gt;Sample&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV style="mso-element:footnote-list;"&gt;
&lt;DIV id=ftn1 style="mso-element:footnote;"&gt;
&lt;P class=MsoFootnoteText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" color=#000000&gt;&lt;IMG title=telecharger style="WIDTH:24px;HEIGHT:24px;" height=24 alt=telecharger src="http://www.adcworks.com/images/content/icon-download.gif" width=24 align=middle&gt;&amp;nbsp;Vous pouvez télécharger le Sample &lt;/FONT&gt;&lt;A class="" href="http://msmvps.com/files/folders/valentin/entry484562.aspx" target=_blank&gt;&lt;FONT face="times new roman,times" color=#000000&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="times new roman,times" color=#000000&gt;.&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="times new roman,times" color=#000000 size=3&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" color=#000000&gt;A bientôt sur ce Blog !&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" color=#000000&gt;Valentin Billotte&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=484555" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Terrain/default.aspx">Terrain</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Blend/default.aspx">Blend</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Direct+3D/default.aspx">Direct 3D</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Multitexturing/default.aspx">Multitexturing</category></item><item><title>Tutorial Managed DirectX/Direct3D : Les lumières</title><link>http://msmvps.com/blogs/valentin/archive/2007/01/10/tutorial-managed-directx-direct3d-les-lumi-res.aspx</link><pubDate>Wed, 10 Jan 2007 13:04:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:481650</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=481650</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2007/01/10/tutorial-managed-directx-direct3d-les-lumi-res.aspx#comments</comments><description>&lt;P class=Titrechapitre style="MARGIN:10pt 0cm 60pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Times size=6&gt;&lt;FONT size=5&gt;Les Lumières et les matériaux&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;Les lumières et les matériaux constituent les deux éléments principaux de tout jeu en 3D pour créer une ambiance. Sans eux, un jeu est morne, terne sans saveur. Ils sont la clé de voûte pour tout jeu misant particulièrement sur l’ambiance.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH:640px;HEIGHT:480px;" height=480 src="http://msmvps.com/photos/valentin/images/481637/640x480.aspx" width=640 border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times size=3&gt;Figure 1 — Tomb Raider&amp;nbsp;: Ici l’ambiance fait tout&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times&gt;Ce tutorial aborde tout ce qui tourne autour des lumières et des matériaux sous DirectX. Nous allons créer comme programme d’exemple un système astronomique avec comme source lumineuse le soleil, une comète, et un interrupteur pour allumer le tout ! Pour illustrer de manière plus complète les matériaux, un autre exemple (beaucoup plus simple) sera réalisé pour mettre en valeur les différent type de réflexion possible face à une source lumineuse.&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=5&gt;1 Et la lumière fut …&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times&gt;Plusieurs types de lumières peuvent être créées sous DirectX pour créer un monde plus réaliste. Malheureusement toute effet lumineux créé par lui ne sera jamais aussi réaliste que celui du monde réel. Un lumière est soumise à plusieurs contraintes : l’atténuation avec la distance (une bougie ne peut être vue a 1 kilomètre), la réflexion, un objet illuminé peut être lui-même source d’illumination ‘regardez comme la lune éclaire la nuit). De même un objet qui réfléchit la lumière peut atténuation sa valeur avant de la renvoyer. Tous les objets que nous côtoyons ne renvoient pas la lumière de la même manière, un manteau de velours noir absorbera toute source lumineuse, une porcelaine blanche vernie, en renverra une grande partie. DirectX ne peut donc pas prendre tous ces paramètres en compte au risque de créer des applications d’une lenteur toute rédhibitoire mais il arrive toutefois, grâce à d’excellentes approximations à créer des univers lumineux tout à fait réalistes.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;Jusqu’ici les programmes d’exemple ne géraient absolument pas la lumière et étaient parfaitement éclairés sous tous les angles. En fait avec l’instruction&amp;nbsp;:&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dev.RenderState.Lighting = false;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times&gt;Dans les programmes précédents, tout élément de la scène était éclairé parfaitement, sans nuances dans les même proportions. Lorsque cette propriété vaut true, on demande à Direct3D de nous laisser la gestion du module d’illumination.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;On peut ainsi prendre la gestion ou refuser la gestion avant l’affichage de certains objets dans la méthode Render.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;Remarque&amp;nbsp;: Faite le test suivant&amp;nbsp;: donnez true à cette instruction dans les programmes 3D précédent. Al’affichage tous les objets sont noirs&amp;nbsp;: ne connaissant pas la gestion des lumières, nous n’avons créé aucune source lumineuse.&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=4&gt;&lt;STRONG&gt;1.1 Qu’est ce qu’une lumière pour Direct3D&amp;nbsp;?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Une lumière pour Direct3D est un ensemble de propriétés que le programmeur peut modifier. Tous les types de lumières ne les utilisent pas forcément tous.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Position&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Position dans l’espace de la source de lumière.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Direction&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Direction vers laquelle la lumière est émise.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Portée (Range)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Distance maximum à partir de la source lumineuse que la lumière peut parcourir. Tout objet dont la distance à la source est supérieure à cette distance ne sera pas éclairé par la source.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Atténuation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Indique la variation de luminosité sur la distance. La lumière peut s’éteindre brusquement passé la distance Range ou bien diminuer progressivement, ou bien encore s’accentuer&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Lumière diffuse&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;C’est la couleur principale émise par une lumière. La lumière diffuse est une lumière qui a été dispersée, mais elle a toujours une direction par opposition à la lumière ambiante qui n’en a pas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Lumière ambiante&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;C'est la couleur de la lumière ambiante. La lumière ambiante est lumière générale de fond. La lumière ambiante a été tellement dispersée qu'elle n'a aucune direction ou source. Elle produit la même intensité lumineuse en tout point de la scène.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Lumière spéculaire&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;C'est la couleur de la lumière spéculaire qui est émise par la lumière. La lumière spéculaire est l'opposé de la lumière diffuse. La lumière spéculaire n'est pas dispersée du tout, vous peut employer la lumière spéculaire pour créer des points culminants sur vos objets.&lt;BR&gt;&lt;BR&gt;Toutes ces caractéristiques peuvent être paramétrées via les propriétés d’un objet de type Light.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;1.2 Quels types de lumières&amp;nbsp;?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il y a quatre types de lumières qui peuvent être créée dans une scène. Chaque type utilise une partie des propriétés définies dans le point précédent.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Toutes les lumières ajoutent des frais généraux processeurs à votre application. La lumière ambiante est la plus simple à mettre en place, suivie des lumières directionnelles, puis les lumières ponctuelles et enfin les lumières spot.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pensez à ceci quand vous décidez quelles lumières à employer dans votre application.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;Lumière ambiante&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;Cette lumière n’a ni position ni direction. L’intensité qu’elle génère est constante en tout point de la scène.&lt;/FONT&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;dev.RenderState.Ambient = Color.Green;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ici la lumière ambiante donnée est verte.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;Lumière ponctuelle&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il s’agit là de la même source de lumière qu’une ampoule. Il y’a certes une source, l’ampoule, mais pas de direction&amp;nbsp;: la lumière est émise dans tous les sens. Un exemple d'une lumière de point est une ampoule. Il a également les attributs de couleur, de gamme et d'atténuation qui peuvent être placés. Figue 7.1 ci-dessous, expositions comment la lumière est émise d'une lumière de point.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Une lumière ponctuelle se paramètre grâce à une position, une direction, une atténuation, une portée, une couleur et une couleur réfléchie.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:600px;HEIGHT:600px;" height=600 src="http://msmvps.com/photos/valentin/images/481656/original.aspx" width=600 align=absMiddle border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;Figure 2&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;Lumière Directionnelle&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les lumières directionnelles ont la direction et colorent mais ne disposent d’aucun source.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Un peu comme la lumière du soleil (s’il n’y avait pas le soleil de visite). Grâce à ce type de lumière, tous les objets dans la scène reçoivent la lumière de la même direction. Les lumières directionnelles n'ont pas des attributs de gamme ou d'atténuation. Figue 7.2 ci-dessous, expositions comment la lumière est émise d'une lumière directionnelle.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Une lumière directionnelle se paramètre grâce à une direction, une couleur et une couleur réfléchie.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:600px;HEIGHT:600px;" height=600 src="http://msmvps.com/photos/valentin/images/481667/original.aspx" width=600 align=absMiddle border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;Figure 3&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;Spot / Projecteurs&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pas besoin de décrire cette lumière, son nom la définit. On voit dans la vie réel ce genre de source lumineuse sur les réverbères, ou les spots de théâtres qui, en haut d’une scène, éclairent l’acteur. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les projecteurs se paramètrent grâce à une position, direction, couleur, couleur de réflexion, l'atténuation et portée. Pour un projecteur vous pouvez définir en plus un cône intérieur et externe par l’intermédiaire de deux angles. Una variable nommée FallOff indique alors avec quelle intensité la lumière va tendre de 0 depuis le bord du cône interne jusqu’au bord du cône externe. Le cône interne est la lumière puissante sans atténuations&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;L'angle du cône intérieur est connu comme thêta et l'angle du cône externe est connu comme phi.&lt;/FONT&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times size=3&gt;Figure 17.4&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:18pt 0cm 10pt;"&gt;&lt;FONT face=Times size=5&gt;2 Matériaux&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’utilisation d’une source de lumière n’a aucune raison d’être si le point qui se trouve illuminé sur un objet n’est pas doté de propriétés qui décrivent son comportement face à la lumière. Cet ensemble de propriété est nommé matériau (material).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;2.1 Qu’est ce qu’un matériau?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Un matériau décrit comment la lumière est réfléchie sur objet (polygone). Vous pouvez indiquer la quantité de lumière réfléchie, faire briller l’objet ou le rendre mat ou encore donner une couleur.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ces arrangements sont énumérés ci-dessous :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;La réflexion diffuse &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Quantité de lumière diffuse que l'objet réfléchira. C'est une valeur de couleur. Il est possible d’indiquer que l'objet réfléchira seulement la lumière diffuse du rouge. Ceci fera paraître l’objet en rouge.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;La réflexion ambiante &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Quantité de lumière ambiante que l'objet réfléchira. C'est une valeur de couleur qui permet d’indiquer que l'objet réfléchit ou non la lumière ambiante. Il est ainsi possible de cacher l’objet à moins qu'il reçoive un autre type de lumière telle que la lumière diffuse.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;La réflexion spéculaire et sa puissance&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Quantité de lumière spéculaire qui est réfléchie. Vous pouvez employer la réflexion et les puissances spéculaires pour créer les points spéculaires qui feront briller l'objet.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN class=GrasDansTexte&gt;&lt;STRONG&gt;&lt;FONT face=Times&gt;Émission &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Possibilité de rendre un objet émetteur de lumière. Si l'objet semble émettre de la lumière il n’en émet pas réellement&amp;nbsp;; &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;les autres objets dans la scène ne seront pas affectés par cet arrangement.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:18pt 0cm 10pt;"&gt;&lt;FONT face=Times size=5&gt;3 La Normale&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La normale en un point est un vecteur de norme 1 dont les coordonnées quantifient son orientation dans l’espace 3D.Cette notion étonnante (orienter un point&amp;nbsp;?!) permet de calculer la capacité de ce point à absorber la lumière, suivant l’angle d’arrivée de celle-ci sur le point.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Etudions le schéma suivant&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:400px;HEIGHT:300px;" height=300 src="http://msmvps.com/photos/valentin/images/481674/original.aspx" width=400 border=2&gt;&lt;BR&gt;Figure 5 —Une surface, un point, une normale, une lumière et un angle&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;L’angle a que fait le rayon lumineux L avec la normale N de cette surface permet de calculer l’intensité lumineux en ce point. L’intensité lumineuse décroît lorsque a croît.&lt;/FONT&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:640px;HEIGHT:386px;" height=386 src="http://msmvps.com/photos/valentin/images/481677/640x386.aspx" width=640 border=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;Figure 6 —Modulation de l’intensité résultante suivant l’angle a.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;C’est le même principe que lorsqu’on est face à un soleil couchant ou se levant&amp;nbsp;: nos yeux peuvent le regarder sans protections. Au zénith, il veut mieux éviter.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:18pt 0cm 10pt;"&gt;&lt;FONT face=Times size=5&gt;4 Premier exemple&amp;nbsp;: Lumière Spot, Directionnel et Point&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Toutes les notions liées à la gestion de la lumière ayant été acquises un exemple s’impose pour mettre en application sous DirectX ce que nous venons d’apprendre.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.1 Quid exemplum&amp;nbsp;?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Quel meilleur exemple pour parler de lumière que de recréer une partie du système solaire?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les cinq premières planètes et la lune (mercure, vénus, terre, mars, jupiter) ainsi que le soleil.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Nous ferons partir une lumière directionnelle et/ou lumière point du soleil pour comparer. Un spot sortira de la terre pour éclairer toutes planètes se trouvant à proximité.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Bien entendu, comme d’habitude, plusieurs touches clavier permettront de modifier divers paramètres dans le jeu.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ouvrez le programme d’exemple intitulé «&amp;nbsp;Direct3D Lumières&amp;nbsp;». Au lancement du programme nous avons l’écran suivant&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Titrefigure style="MARGIN:12pt 0cm 20pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:618px;HEIGHT:480px;" height=480 src="http://msmvps.com/photos/valentin/images/481684/618x480.aspx" width=618 align=absMiddle border=2&gt;&lt;BR&gt;Figure 7 —Vers l’infini et au dela&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;Rien qu’à voir cet écran, on comprend mieux le terme «&amp;nbsp;ambiance&amp;nbsp;» employé dans l’introduction de ce chapitre. On se croirait presque dans l’espace&amp;nbsp;! Il ne manque plus que les étoiles (nous verrons cela avec les particules à la fin de cet ouvrage).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Une terre et 4 autres planètes apparaissent gravitant autour du soleil. Une lune peut être aperçue autour de la terre. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Toutes les planètes sont éclairées par le soleil. Seule une partie de leur surface est donc éclairée (tout comme la lune).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Remarque&amp;nbsp;: Le programme ne respecte pas scrupuleusement les dimensions et distances réelles. Que les puristes pardonnent cet exemple modifié pour simplifier la vue. Une simple visite sur les nombreux sites astrologie permettra de corriger le programme.&lt;SPAN class=MsoFootnoteReference&gt; &lt;A class="" title=_ftnref1 style="mso-footnote-id:ftn1;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftn1" name=_ftnref1&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=2&gt;[1]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;. Néanmoins il respect les degrés d’obliquité, les temps de révolution et les temps de rotations.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le programme fonctionnera principalement sur les matrices et les calculs qui en découlent. Chaque rotation autour d’un axe de planète, chaque rotation autour d’une planète, chaque translation, obliquité, demandera une matrice et un calcul ceci multiplié par le nombre de matrices.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Dans les nouveautés nous aurons ici&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Times&gt;Une gestion de lumières.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Times&gt;Une gestion de matériaux.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Times&gt;Une nouvelle classe pour la forme 3D sphérique&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Times&gt;La classe cube modifié pour pouvoir être associée à un matériau.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.2 Les matrices pour mettre en mouvement&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Avant de regarder comment les lumières sont gérées, il nous faut commencer par la gestion des objets graphiques.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il existe dans le code source plus d’une trentaine de matrices. Nous étudierons seulement celles qui donnent un mouvement à la terre. La gestion des matrices a été simplifiée au maximum pour rendre le programme simple à lire (que les puristes me pardonnent :) ).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La déclaration se fait en tout début de fichier&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Matrix matriceTerre, matriceDéplacementTerre, matriceTerrePivot, matriceRotationTerreAutourDeSonAxe, matriceRotationTerreAutourSoleil, matriceTerreNuages;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La matrice nommée matriceTerre est la résultante de tous les calculs à effectuer pour donner un mouvement réaliste à notre planète. Les matrices suivantes servent à calculer (dans l’ordre)&amp;nbsp;: la distance de la terre par rapport au soleil, l’ubiquité de la terre (elle penche), la rotation de la terre autour de son axe, la révolution qu’elle effectue autour du soleil et, enfin une matrice pour la masse nuageuse qui entoure la planète.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les calculs sont réalisés très simplement dans SetupMatrice&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;//Calculs de différentes échelles de temps&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;float tempsJour = -this.vitesseTemps;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;float tempsAnnée = tempsJour * 365.0f;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;float tempsMois = tempsAnnée / 12.0f;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;//////////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;//mise en place des matrices de transformation pour la terre&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceRotationTerreAutourDeSonAxe = Matrix.RotationY(Environment.TickCount/tempsJour);//une rotation par jour&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceRotationTerreAutourSoleil = Matrix.RotationY(Environment.TickCount/tempsAnnée);//365 rotation par an&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceDéplacementTerre = Matrix.Translation(20.0f,0.0f,0.0f);//km de distance du soleil&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceTerrePivot = Matrix.RotationYawPitchRoll(0.0f,0.0f, 23.44f* (float)Math.PI/180);//obliquité de l'axe de rotation&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceTerre = Matrix.Scaling(1f, 1f, 1f)*matriceRotationTerreAutourDeSonAxe*matriceTerrePivot;//création d'une seule matrice pour tous ces calculs&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceTerre *= matriceDéplacementTerre;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;matriceTerre *= matriceRotationTerreAutourSoleil;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Pour plus de clarté nous allons énumérer instruction par instruction ce qui est fait&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les trois premières sauvegarde pour une utilisation ultérieure des temps précis sur lesquels se baseront les calculs futurs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le premier calcul de matrice réalise une rotation d’une durée d’un jour (rotation autour de l’axe de la terre). Le second calcul effectue ue autre rotation mais pour le temps d’une année. Une translation de 20 en abscisse par rapport à l’origine est effectuée. L’ubiquité est sauvegardée dans une nouvelle matrice. Nous avons à ce stade 4 matrices initialisées décrivant chacune un mouvement précis de la terre. La dernère matrice nommée matriceTerre va être calculée à partir d’elles. Un scalling est réalisé&amp;nbsp;: la taille de la terre fait 1 en standard ici multiplié par la rotation autour de son axe et l’ubiquité. Le résultat est multiplié dans l’instruction suivante par la distance au soleil et enfin dernière phase, prise en compte de la rotation de la terre.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Encarttexte style="MARGIN:6pt 1cm 1pt 2cm;"&gt;&lt;FONT face=Times&gt;Remarque&amp;nbsp;: on voit bien ici que l’ordre des multiplications de matricesdoit être scrupuleusement respecté&amp;nbsp;: si nous avions fait une translation de matriceDéplacementTerre après la dernière rotation au lieu d’avant, nous aurions eu une terre qui tournerai plus vite que la normale sur elle-même et qui n’effectuerait pas de révolution autour du soleil. Dans ce code par contre, la seconde rotation est effectuée après la translation, c’est donc un cercle d’une distance de 20 que la terre parcours&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Chaque matrice finale de chaque planète, satellite ou enveloppe nuageuse est affectée à la matrice World avant l’affichage de la forme correspondante dans Render&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;//afficher la terre&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;device.Transform.World = matriceTerre;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;this.sphereTerre.Render(device);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.3 Gérer les matériaux&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;Autre étape importante&amp;nbsp;: la gestion des matériaux. Pour une bonne luminosité, donner une matériau à sa forme éclairée est une bonne chose&amp;nbsp;! Leur gestion est enfantine. Nous avons une classe Cube et Sphere qui acceptent&amp;nbsp;un materiau en entrée&amp;nbsp;dans le contructeur&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;ColorValue rgbaDiffuse&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= new ColorValue(0, 0, 0, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;ColorValue rgbaAmbient&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;= new ColorValue(0, 0, 0, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;ColorValue rgbaSpecular = new ColorValue(0, 0, 0, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;ColorValue rgbaEmissive = new ColorValue(0,0, 0, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;this.DéfinirMaterial(rgbaDiffuse, rgbaAmbient, rgbaSpecular, rgbaEmissive, 200);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;DéfinirMaterial se présente ainsi dans Cube et Sphere&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;public void DéfinirMaterial(Color rgbaDiffuse, Color rgbaAmbient, Color rgbaSpecular, Color rgbaEmissive, float rPower)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.material.Diffuse = rgbaDiffuse; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.material.Ambient = rgbaAmbient; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.material.Specular = rgbaSpecular;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.material.SpecularSharpness = rPower;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;this.material.Emissive = rgbaEmissive;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;Rien de compliqué si on a lu le point 17.2 de ce chapitre.&lt;BR&gt;&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.4 Créer des normales&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Avant dernière étape avant les lumières, la gestion des normales permet de rendre visible un objet. Ajouter une normale à une surface / vertex est une opération compliquée si l’on souhaite créer un vecteur spécial. Dans le cas contraire, c’est une opération simple.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Il faut d’abord modifier le format de vertices pour ajouter les normales&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;public struct SphereVertex&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public float X, Y, Z;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public float Nx, Ny, Nz;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public int Couleur;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public float tu, tv;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public const VertexFormats Format = VertexFormats.Position | VertexFormats.Normal | VertexFormats.Diffuse | VertexFormats.Texture1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="courier new,courier"&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les trois flottants ajoutés (Nx, Ny, Nz) définit par le drapeau VertexFormats.Normal spécifient un format de vertices acceptant un vecteur normal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’initialisation se fait dans la méthode qui rempli de vertex buffer (OnCreateVertexBuffer)&amp;nbsp;dans la classe Cube ou Sphere: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;Vector3 vNormal; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;vNormal.X = x0;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;vNormal.Y = y0;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;vNormal.Z = z0;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="courier new,courier"&gt;vNormal = Vector3.Normalize(vNormal);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;C’est la méthode Normalize de Vector3 qui créé une normale dans le point donné de coordonnées (x0, y0, z0).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.5 Gérer les lumières&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Tout est maintenant prêt pour la gestion des lumières&amp;nbsp;!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La première étape est de supprimer la lumière artificielle qui éclaire toute la scène.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Deux aspects graphiques sont aussi ajoutés via render stage&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;dev.RenderState.Lighting = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Suit alors, dans Render la création des lumières. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;if (this.typeLumière == TypeLumière.Directionnelle)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Diffuse= Color.FromArgb(255,255, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Type =LightType.Directional;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Direction = Vector3.TransformCoordinate(Vector3.Empty,&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Matrix.Translation(15.0f,0.0f,0.0f)*matriceRotationTerreAutourSoleil);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;else if (this.typeLumière == TypeLumière.Ponctuelle)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Diffuse= Color.FromArgb(255,255, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Type =LightType.Point;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Range = this.portéeLumière;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Diffuse= Color.FromArgb(255,0, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Type =LightType.Spot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Direction = Vector3.TransformCoordinate(Vector3.Empty,&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Matrix.Translation(15.0f,0.0f,0.0f)*matriceRotationTerreAutourSoleil);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].Falloff = 0.0f;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].InnerConeAngle = 0.025f*tailleCone;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.device.Lights[0].OuterConeAngle = 0.05f*tailleCone;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;this.device.Lights[0].Position = Vector3.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;this.device.Lights[0].Attenuation0 = 1.0f;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;this.device.Lights[0].Attenuation1 = 0.0f;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;this.device.Lights[0].Attenuation2 = 0.0f;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;this.device.Lights[0].Enabled = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Généralement la création de lumière se fait une fois, mais dans notre cas elle peut avoir à être mise à jour à chaque nouvelle frame, son emplacement dans Render se trouve donc nécessaire.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="times new roman,times"&gt;TypeLumière est une énumération que nous avons créé nous même pour définir le choix de l’utilisateur quand à l’éclairement de la scène.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Lights est un tableau de Light appartenant à l’objet device dont la taille est infinie.&amp;nbsp;Nous utilisons ici l’index 0 mais nous aurions pu utiliser 400. Null besoin d’initialiser un objet Light. Il faut juste valider la lumière paramétrée avec un Enable = true comme pour la dernière instruction. Il est possible dans le programme d’utiliser trois types de lumière&amp;nbsp;: directionnel, ponctuel et Spot. Ponctuel est la lumière standard du soleil qui éclaire dans toutes les directions à partir d’un point source. Directionnel va au contraire donner un sens à la lumière&amp;nbsp;: la droite passant par l’origine et par le centre de la terre. Toutes les planètes dans ce cas se verront éclairée dans le sens soleil-terre. Enfin Spot va diriger la lumière vers une planète prise (ici la terre). L’utilisateur pourra chaner la taille du cone du Spot pour n’éclairer qu’une partie de la terre, toute la terre ou une vaste zone de l’espace. Un if else est donc obligatoire pour paramétrer différemment ces trois lumières. Pour la directionnel une direction est donnée&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;Matrix.Translation(15.0f,0.0f,0.0f)*matriceRotationTerreAutourSoleil&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;C’est à dire la position de la terre, &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;L’expression&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;Vector3.Empty&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:12pt;"&gt;&lt;FONT face=Times&gt;&lt;FONT size=2&gt;est le vecteur origine (0, 0, 0). Vector.TransformCoordinate transforme un vecteur dans l’espace en se basant sur le calcul matriciel passé en second argument. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Dans le else suivant, point de direction mais une portée pour la lumière directionnelle&amp;nbsp;: définie par l’utilisateur à l’aide du clavier.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Enfin le dernier else pour le Spot définit le fallOff, l’innerCone, l’outerCone&lt;/FONT&gt;&lt;A class="" title=_ftnref2 style="mso-footnote-id:ftn2;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftn2" name=_ftnref2&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=2&gt;[2]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Suit un paramétrage commun pour la position et l’atténuation. Les trois valeurs d’atténuation présentes ici (0, 1 et 2) sont des facteurs différents pour une atténuation&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-alt:solid windowtext .5pt;mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext;mso-yfti-tbllook:480;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:windowtext 1pt solid;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Attenuation0&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:#ece9d8;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Facteur d’atténuation linéaire.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:1;"&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:windowtext 1pt solid;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Attenuation1&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:#ece9d8;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Facteur d’atténuation au carré. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:2;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:windowtext 1pt solid;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Attenuation2&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:#ece9d8;WIDTH:215.95pt;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;
&lt;P class=Textetableau style="MARGIN:4pt 0cm;"&gt;&lt;FONT face=Times&gt;Facteur d’atténuation Exponentiel.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La propriété Enable active la lumière.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.6 La ou la lumière n’éclaire rien …&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;Bien des points dans cet exemple peuvent sembler encore obscurs. Voyons les en détails.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;H3 style="MARGIN:22pt 0cm 12pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;&lt;FONT size=3&gt;Effet sur les planètes?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Deux beaux effets viennent couronner ce programme d’aide. La terre est entourée d’une atmosphère, le soleil semble se consumer. Ces deux effets sont réalisés à l’aide de l’alphablending&lt;/FONT&gt;&lt;A class="" title=_ftnref3 style="mso-footnote-id:ftn3;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftn3" name=_ftnref3&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=2&gt;[3]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times&gt;. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La terre est entourée d’une sphere légèrement plus grosse qu’elle sur laquelle est plaquée la texture suivante&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;IMG src="http://msmvps.com/photos/valentin/images/481715/original.aspx" align=absMiddle border=2&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;FONT face=Times&gt;Lorsque la forme sphérique est affichée avec le blending suivant&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.AlphaBlendEnable = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.SourceBlend = Blend.SourceAlpha;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.DestinationBlend = Blend.One;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le noir ajouté aux couleurs de la terre disparaît et le blanc efface les couleurs de la terre, les couleurs se marient donc parfaitement&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La même opération est réalisée pour le soleil, mais avec deux sphères. L’opération de blending est légèrement différente.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.AlphaBlendEnable = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.DestinationBlend = Blend.DestinationColor;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.SourceBlend = Blend.SourceColor;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:22pt 0cm 12pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;Ombres?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les rayons de Direct3D sont tellement puissants qu’ils traversent les objets&amp;nbsp;! Trève de plaisanterie, le module d’illumination traite les points qu’on lui adresse sans jamais se référer aux formes auxquels ils appartiennent. Si une forme est cachée derrière une forme éclairée, elle sera elle aussi éclairée. La gestion des ombres incombe donc au programmeur …&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La lune peut être ainsi vue éclairée lorsqu’elle se trouve derrière la terre&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;IMG style="WIDTH:367px;HEIGHT:336px;" height=336 src="http://msmvps.com/photos/valentin/images/481722/original.aspx" width=367 border=2&gt;&lt;BR&gt;Figure 17.8 —Vieux dicton&amp;nbsp;: Lune éclairée à la novembre, terre transparente !&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;De même on peut d’apercevoir que la terre dans sa partie sombre est visible parceque les nuages de son atmosphère ne sont pas cachées&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Times size=3&gt;Figure 17.9 &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Times&gt;L’alpha blending donne pour pixels colorés en sortie le résultat d’une opération qui prend en compte les texels de la texture de la sphère de nuage et ceux de la surface de la sphère terre. Dans la mesure où la sphère terre est noire car non touchée par la lumière, et que la couleur noire est l’élément neutre dans le blending exécuté ici, on obtient la restitution parfaite de la texture nuage… Dommage mais facilement réparable. «&amp;nbsp;Tatillonnez&amp;nbsp;» vous trouverez.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT size=4&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;Fil de fer&amp;nbsp;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le mode fil permet l’affichage d’une forme 3D sous la forme d’un grillage complexe. Afficher les modèles dans ce mode est simple et ne demande qu’une instruction&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.FillMode = FillMode.WireFrame;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;L’instruction permettant un affichage classique étant&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;this.device.RenderState.FillMode = FillMode.Solid;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:22pt 0cm 12pt;"&gt;&lt;SPAN style="mso-ansi-language:FR;"&gt;&lt;FONT face=Times&gt;Dither&amp;nbsp;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Méthode pour afficher des données graphiques avec une palette de couleurs limitée. Chaque Pixel de l'image source est étalé&amp;nbsp; (habituellement une zone de 2x2) sur l'image de destination. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;A distance, l'oeil mélange les pixels dans une couleur qui offre plus de nuances que la palette originale. La technique a comme conséquence un meilleur aspect visuel que la suppression arbitraire de pixels.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face=Times&gt;Pour l’activer&amp;nbsp;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;dev.RenderState.DitherEnable = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:14pt 0cm 8pt;"&gt;&lt;FONT face=Times size=4&gt;4.7 Touches de l’exécutable&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Page Haut/Bas&amp;nbsp;: Déplacement en hauteur.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Flèches haut/bas&amp;nbsp;: avancer/reculer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;+/-&amp;nbsp;: Vitesse temporelle du système&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F1&amp;nbsp;: Modification de la couleur de fond.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F2&amp;nbsp;: Annuler/ajouter les lumières.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F3&amp;nbsp;: Prendre place sur la lune pour observer la terre.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F4/F5&amp;nbsp;: affichage en fil de fer ou en mode solide.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F6&amp;nbsp;: Une lumière directionnelle dans le sens soleil/terre&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;ou&amp;nbsp; lumière ponctuelle avec pour centre le soleil&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F7/F8&amp;nbsp;: Modifier le matériau de la terre (lumière spéculaire ou non)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F9/F10&amp;nbsp;: augmenter la portée de la lumière ou la diminuer de 1 (si lumière ponctuelle)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;F11/F12&amp;nbsp;: diminuer ou augmenter la taille du cône de la lumière en mode Spot&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:18pt 0cm 10pt;"&gt;&lt;FONT face=Times size=5&gt;5 Second exemple&amp;nbsp;: Matériaux&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Dernier exemple du chapitre portant sur les matériaux. Le programme sur les matrices faisant tournoyer des cubes va être repris. Une lumière ponctuelle sera utilisée pour les éclairer. L’aspect intéressant résidera dans le fait que chaque cube aura un matériau propre qui lui donnera un aspect différent face à une source de lumière&amp;nbsp;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Le code source de cet exemple (intitulé Direct3D Lumières (2) ) s’avère fort simple. Quatre sphères créées avec une forme rudimentaire, 4 calculs de matrices pour les faire tournoyer, une lumière ponctuelle créée et, enfin 3 matériaux ajoutés au trois premières sphères.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La première sphère à gauche sera mat et renverra une lumière douce.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;FONT face="Courier New"&gt;sphere1.material.Diffuse = Color.FromArgb(255, 128, 64, 255);&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Seule la couleur diffuse est donc précisée.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times size=3&gt;&lt;FONT size=2&gt;La troisième sphère à droite sera brillante&lt;/FONT&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere2.material.Diffuse = Color.FromArgb(0, 255, 255, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere2.material.Ambient = Color.FromArgb(128, 255, 128, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere2.material.Specular = Color.FromArgb(128, 255, 128, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Une lumière diffuse évidemment mais aussi une lumière ambiante (réfléchie) et une lumière spéculaire (brillante).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La troisième sphère en haut sera réfractant et semblera être une source lumineuse en renvoyant une vive lumière.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere3.material.Diffuse = Color.FromArgb(128, 128, 128, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere3.material.Ambient = Color.FromArgb(255, 255, 255, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere3.material.Emissive = Color.FromArgb(24, 24, 24, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=listinginter style="MARGIN:0cm 0cm 0pt 8.5pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;FONT face="Courier New"&gt;sphere3.material.Specular = Color.FromArgb(255, 255, 255, 255);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Ici une lumière spéculaire est définie pour rendre l’objet lumineux.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;La dernière sphère enfin sera éclairée complètement afin de pouvoir faire une comparaison.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT face=Times size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:18pt 0cm 10pt;"&gt;&lt;FONT face=Times size=5&gt;6 Conclusion&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;Les deux exemples de ce tutorial l’ont bien montré&amp;nbsp;: les lumières sont une composante primordiale de tout jeu. Elles interviennent principalement dans l’ambiance du jeu mais aussi dans son réalisme au même titre que les textures. Leur utilisation étant triviale rien ne saurait empêcher quiconque de les utiliser dans ses productions&amp;nbsp;! Dans tous les cas toujours bien étudier le sens même de tous les objets créés dans une scène afin de leur octroyer un matériau propre à sa finalité.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face=Times&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=Textecourant1er style="MARGIN:0cm 0cm 1pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title=telecharger style="WIDTH:24px;HEIGHT:24px;" height=24 alt=telecharger src="http://www.adcworks.com/images/content/icon-download.gif" width=24 align=middle&gt;&amp;nbsp;Vous pouvez télécharger les samples &lt;/FONT&gt;&lt;A class="" href="http://msmvps.com/files/folders/valentin/entry481770.aspx" target=_blank&gt;&lt;FONT face="times new roman,times" color=#000000&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="times new roman,times" color=#000000&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="mso-element:footnote-list;"&gt;&lt;BR&gt;&lt;FONT face=Times size=3&gt;
&lt;HR align=left&gt;
&lt;/FONT&gt;
&lt;DIV id=ftn1 style="mso-element:footnote;"&gt;
&lt;P class=MsoFootnoteText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;A class="" title=_ftn1 style="mso-footnote-id:ftn1;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftnref1" name=_ftn1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=1&gt;[1]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times size=1&gt; Notamment le site http://www.ens-lyon.fr/Planet-Terre/Infosciences/Planetologie/Description/Articles/planetcompar.html.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV id=ftn2 style="mso-element:footnote;"&gt;
&lt;P class=MsoFootnoteText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;A class="" title=_ftn2 style="mso-footnote-id:ftn2;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftnref2" name=_ftn2&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=1&gt;[2]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times size=1&gt; Voir la figure 4 pour comprendre l’utilité de ces 3 paramètres.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV id=ftn3 style="mso-element:footnote;"&gt;
&lt;P class=MsoFootnoteText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;A class="" title=_ftn3 style="mso-footnote-id:ftn3;" href="http://msmvps.com/tiny_mce/jscripts/tiny_mce/blank.htm#_ftnref3" name=_ftn3&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character:footnote;"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Times;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';mso-fareast-language:FR;mso-bidi-language:AR-SA;"&gt;&lt;FONT size=1&gt;[3]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Times size=1&gt; Voir le post ...&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=481650" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Blend/default.aspx">Blend</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Lights/default.aspx">Lights</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Materials/default.aspx">Materials</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Direct+3D/default.aspx">Direct 3D</category></item><item><title>Chargement asynchrone d'objets 3D</title><link>http://msmvps.com/blogs/valentin/archive/2006/12/26/chargement-asynchrone-d-objets-3d.aspx</link><pubDate>Tue, 26 Dec 2006 05:52:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:452832</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=452832</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2006/12/26/chargement-asynchrone-d-objets-3d.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;La classe &lt;STRONG&gt;Mesh&lt;/STRONG&gt; et la classe &lt;STRONG&gt;ProgressiveMesh&lt;/STRONG&gt; de &lt;STRONG&gt;Direct3D&lt;/STRONG&gt; (D3DX pour être précis) sont d'une très grande utilité lorsqu'il s'agit de réaliser un sample pour le DSK DirectX browser ou pour réaliser soit même des tests… mais dès qu'il s'agit de développer un moteur ou d'exploiter à outrance les performances de sa machine, ces deux classes sont à proscrire :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Elles sont lentes à charger,même en lisant des .x binaires. &lt;STRONG&gt;Mesh&lt;/STRONG&gt; offre de nombreuses fonctionnalités qui demandent un chargement avec plus de traitement.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Elles ne permettent pas un chargement à deux temps. Par chargement en deux temps j'entend pouvoir, à la manière du développement Winform, placer en asychrone tout traitements compatibles, et réduire au maximum&amp;nbsp;les traitements synchrones de chargement.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;En quoi ceci est il réellement handicapant ? &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Je vais donner un exemple simple : dans le moteur que je développe en Managed DirectX 1.1/.Net 2.0 j'ai jusqu'à 1400 meshs affichés par frames. Utiliser la classe &lt;STRONG&gt;Mesh&lt;/STRONG&gt; m'empêche de pouvoir charger un Mesh en mémoire lorsque j'ai besoin de l'afficher tout simplement parce que je vais "freezer" le jeu le temps du chargement. En effet je ne peux pas effectuer avec cette classe un chargement asynchrone (utiliser un device 3D en dehors du thread dans lequel le device a été créé est source d'instabilité). Si je n'avais que ponctuellement un Mesh à afficher cette technique serait passable (dans le cas de petits meshs toutefois) mais dans mon moteur je charge les meshs quelques instants avant qu'ils apparaissent à la camera. Dans ce cas, charger en synchrone provoquerai des court laps de freeze pour chaque meshs chargés rendant le jeu injouable.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;IMG title="Mon moteur charge les objets 3D en asynchrone" style="WIDTH:642px;HEIGHT:499px;" height=499 alt="Mon moteur charge les objets 3D en asynchrone" src="http://msmvps.com/photos/valentin/images/453895/original.aspx" width=642 align=middle&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Times New Roman"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=2&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE:8pt;"&gt;Mon moteur charge les objets 3D en asynchrones : transparent pour l'utilisateur, léger pour la mémoire, rapide pour le GPU.&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-SIZE:8pt;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;La solution passe par un chargement en deux étapes :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Tout d'abord&amp;nbsp;la lecture du fichier avec extraction des données.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Puis le chargement des buffers utilisé pour l'affichage. &lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Si la seconde partie est très rapide, la première est relativement lente. L'astuce consiste à effectuer cette première partie en asynchrone et la seconde partie entre deux frames (c'est à dire en dehors du triplet Begin/End/Present). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;C'est là ou la classe &lt;STRONG&gt;Mesh&lt;/STRONG&gt; et &lt;STRONG&gt;ProgressiveMesh&lt;/STRONG&gt; nous sont inutiles. Nous devons réaliser des custom classes&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;possédant deux méthodes : &lt;EM&gt;Initialize&lt;/EM&gt; qui sera appelée à partir d'un thread asynchrone au thread d'affichage principal et &lt;EM&gt;Load(Device)&lt;/EM&gt; appelée dans le thread principal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Initialize va lire le fichier ou le flux de données et extraire (je simplifie) deux listes : l'une pour les vertices, l'autre pour les indices.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT face="times new roman,times"&gt;Voici un exemple de ce que pourrait être la méthode &lt;EM&gt;Initialize&lt;/EM&gt; d'une classe générant un terrain de jeu :&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private void Initialize()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// All the vertices are stored in a 1D array&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_vertices = new TerrainTexturedVertex[Region.NumberOfVertices];&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int vertexIndex = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Load vertices into the buffer one by one&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for (int z = 0; z &amp;lt; Region.NumberOfQuadsOnZAxis + 1; z++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for (int x = 0; x &amp;lt; Region.NumberOfQuadsOnXAxis + 1; x++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;TerrainTexturedVertex vertex = new TerrainTexturedVertex();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertex.X = myValueX;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertex.Z = myValueZ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertex.Y = myValueY;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertex.Tu = x * (1f / (float)Region.NumberOfQuadsOnXAxis);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertex.Tv = z * (1f / (float)Region.NumberOfQuadsOnZAxis);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;_vertices[vertexIndex] = vertex;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;vertexIndex++;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.ComputeNormals();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Tout ce que fait cette méthode se résume à la "construction" d'un tableau de vertices sans aucune référence au device. Il ne s'agit donc qu'une suite répétée de bêtes instructions d'affectation. Aucun difficulté à threader cela.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;EM&gt;Load&lt;/EM&gt; va elle créer un &lt;STRONG&gt;VertexBuffer&lt;/STRONG&gt; et un &lt;STRONG&gt;IndexBuffer&lt;/STRONG&gt; (encore une fois en simplifiant) et va utiliser la méthode &lt;EM&gt;SetData&lt;/EM&gt; de chacun pour leur affecter les listes précédemment chargée.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Voici encore une fois un exemple de ce que pourrait être cette méthode pour notre terrain de jeu :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private void LoadVertexBuffer()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// This is the buffer we are going to store the vertices in&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this._vertexBuffer = new VertexBuffer(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;typeof(TerrainTexturedVertex),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Region.NumberOfVertices,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this._device,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Usage.WriteOnly,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;TerrainTexturedVertex.Format,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Pool.Managed);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// finally assign the vertices array to the buffer&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;this.VertexBuffer.SetData(_vertices, 0, LockFlags.None);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;Ici nous créons un &lt;STRONG&gt;VertexBuffer&lt;/STRONG&gt;, puis, nous le chargeons à l'aide du tableau préalablement rempli par &lt;EM&gt;Initialize&lt;/EM&gt;. Cette méthode est appelée avant l'appel à &lt;EM&gt;BeginScene&lt;/EM&gt; (jamais de traitements entre &lt;EM&gt;Begin&lt;/EM&gt; et &lt;EM&gt;EndScene&lt;/EM&gt; !!).&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;U&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Sample :&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT face="Times New Roman"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title=Telecharger style="WIDTH:24px;HEIGHT:24px;" height=24 alt=Telecharger src="http://www.adcworks.com/images/content/icon-download.gif" width=24 align=middle&gt;Le sample se trouve &lt;/FONT&gt;&lt;A class="" title="Asynchrnous sample" href="http://msmvps.com/files/folders/valentin/entry453928.aspx" target=_blank&gt;&lt;FONT face="times new roman,times"&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="times new roman,times"&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Le programme donné en exemple permet de comparer un chargement synchrone d'un chargement asynchrone.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;C'est un programme très sale pour l'heure que j'ai fait en qq minutes a partir d'un sample du SDK DirectX :). Je vous prie de m'excuser pour le code ...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Le lancement de l'application est instanné. Le premier terrain généré est chargé en arrière plan :&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title="Lancement de l'application sans Freeze" style="WIDTH:656px;HEIGHT:516px;" height=516 alt="Lancement de l'application sans Freeze" src="http://msmvps.com/photos/valentin/images/453915/original.aspx" width=656 align=middle&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Lorsque le terrain est chargé, vous avez deux choix : &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;soit en asynchrone (cochez la case), soit&amp;nbsp;en synchrone (décochez). L'asynchrone est legerement plus lent, mais permet à l'utilisateur de continuer à travailler sur l'application pendant qu'un nouveau terrain se construit en arrière plan.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title="L'application répond toujours alors qu'un nouveau terrain se charge" style="WIDTH:656px;HEIGHT:516px;" height=516 alt="L'application répond toujours alors qu'un nouveau terrain se charge" src="http://msmvps.com/photos/valentin/images/453917/original.aspx" width=656 align=middle&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Pour ce sample j'utlise un &lt;STRONG&gt;BackgroundWorker&lt;/STRONG&gt;. A l'intérieur de la méthode &lt;EM&gt;DoWork&lt;/EM&gt; (asynchrone) j'appelle la méthode &lt;EM&gt;Initialize&lt;/EM&gt; qui va créer les atitudes en tous points du terrain, créer tous les vertices du terrain, créer la liste des indices. Lorsque le worker rend la main via l'event &lt;EM&gt;RunCompleted&lt;/EM&gt;, j'indique qu'un nouveau &lt;STRONG&gt;VertexBuffer&lt;/STRONG&gt; et un nouveau &lt;STRONG&gt;IndexBuffer&lt;/STRONG&gt; peuvent être chargés (ce qui est fait au &lt;EM&gt;OnFrameMove&lt;/EM&gt; suivant). Dans le cas d'un mode synchrone j'appelle directement &lt;EM&gt;Initialize&lt;/EM&gt; sur le thread principal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Il s'agit ici d'un sample avec un code alourdit pour mettre en évidence l'avantage de l'asynchrone pour liberer le CPU/GPU. Couplé à un système de message (du type &lt;EM&gt;ReadMessage&lt;/EM&gt; de l'API Win32) on obtient un système réellement puissant (nous verrons celà dans un futur post).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;IMG title=Telecharger style="WIDTH:24px;HEIGHT:24px;" height=24 alt=Telecharger src="http://www.adcworks.com/images/content/icon-download.gif" width=24 align=middle&gt;Le sample est téléchargeable &lt;/FONT&gt;&lt;A class="" title="Asynchrnous sample" href="http://msmvps.com/files/folders/valentin/entry453928.aspx" target=_blank&gt;&lt;FONT face="times new roman,times"&gt;ici&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="times new roman,times"&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;STRONG&gt;&lt;FONT face="times new roman,times"&gt;Conclusion&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Le résultat au final ne souffre de pratiquement aucune perte de FPS. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Cette technique permet aussi d'éviter à l'utilisateur un chargement d'application "inquiétant". Souvent les samples qui demandent la création d'un grand nombre d'objets 3D freezent durant de longues secondes, le temps que cette opération se fasse.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;En utilisant cette technique, nous pouvons afficher une barre de progression le temps de charger au départ tous les objets via leur méthode &lt;EM&gt;Initialize&lt;/EM&gt; puis au moment de la création du device d'appeler leur methode &lt;EM&gt;Load&lt;/EM&gt;. Nous aurons un freeze dont le temps correspondra au nombre de méthodes Load appelées et au traitement que celles-ci effectuent, c'est à dire un temps relativement insignifiant.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face="times new roman,times"&gt;En outre :&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Cette&amp;nbsp;technique est aussi applicable au chargement de texture.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Cette technique permet une adaptation simplifiée à d'autre technologies multimédia puisque seule la méthode &lt;EM&gt;Load&lt;/EM&gt; doit être modifiée (qui a dit XNA ? :) ).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;Cette technique peut être couplée avec l'utilisation d'un système de caching pour limiter au maximum les instances de vos objets 3D pour encore plus de flexibilité et de rapidité (le caching sera traité dans un futur post).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;A bientôt sur ce Blog !&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;Valentin Billotte&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face="times new roman,times"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=452832" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Texture/default.aspx">Texture</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Mesh/default.aspx">Mesh</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/thread/default.aspx">thread</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/asynchronous/default.aspx">asynchronous</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Load/default.aspx">Load</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category></item></channel></rss>