Je souhaite répéter une petite texture de 2x2 pixels sur un quad plus grand, par exemple, 50x50 pixels.Texture répétée
Set sommets -
float X = 100, Y = 100, Width = 50, Height = 50;
float TextureLeft = 0, TextureTop = 0, TextureRight = 25, TextureBottom = 25;
Vertices[0].x = X;
Vertices[0].y = Y + Height;
Vertices[0].z = 0;
Vertices[0].rhw = 1;
Vertices[0].tu = TextureLeft;
Vertices[0].tv = TextureBottom;
Vertices[1].x = X;
Vertices[1].y = Y;
Vertices[1].z = 0;
Vertices[1].rhw = 1;
Vertices[1].tu = TextureLeft;
Vertices[1].tv = TextureTop;
Vertices[2].x = X + Width;
Vertices[2].y = Y;
Vertices[2].z = 0;
Vertices[2].rhw = 1;
Vertices[2].tu = TextureRight;
Vertices[2].tv = TextureTop;
Vertices[3].x = X;
Vertices[3].y = Y + Height;
Vertices[3].z = 0;
Vertices[3].rhw = 1;
Vertices[3].tu = TextureLeft;
Vertices[3].tv = TextureBottom;
Vertices[4].x = X + Width;
Vertices[4].y = Y;
Vertices[4].z = 0;
Vertices[4].rhw = 1;
Vertices[4].tu = TextureRight;
Vertices[4].tv = TextureTop;
Vertices[5].x = X + Width;
Vertices[5].y = Y + Height;
Vertices[5].z = 0;
Vertices[5].rhw = 1;
Vertices[5].tu = TextureRight;
Vertices[5].tv = TextureBottom;
Tirage au sort -
DrawPrimitive(D3DPT_TRIANGLELIST, 0, 6);
problème est "pépin" dans le bord entre les triangles, probablement à cause des sommets mal coordonnées et aussi "pépin" sur les frontières de quad.
texture originale - http://i.imgur.com/tNqYePs.png
Résultat - http://i.imgur.com/sgUZvqE.png
Vous n'avez pas spécifié l'état du rastériseur que vous utilisez. Peut-être que vous manquez les paramètres de blocage/répétition de la texture. Quoi d'autre appelez-vous avant le DrawPrimitive pour configurer la texture? –
Pourriez-vous me dire quels réglages de rasterizer/clamp/repeat doivent être réglés? Je dessine une scène vide avec quad de texture unique. – Demion
Le réglage "repeat" est appelé "wrap" dans DX. J'ai ajouté la réponse avec le lien vers MSDN, si vous avez des questions sur les valeurs. –