Directx texture

Résolu
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010 - 22 déc. 2005 à 11:50
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010 - 23 déc. 2005 à 23:41
Salut a tous.
Voila j'ai mon triangle texturé mais je voudrai que la texture ce repete plusieur fois au lieu d'un simple plaquage.
Si quelqu'un sait comment faire et me dire comment ca s'appel.
merci.

Vertex g_cubeVertices[] =
{
{-1,1,0,0,1,-1,0.0f,0.0f },//-1,1,-1
{1 ,1,0,0,1,-1,1.0f,0.0f },//1,1,-1
{-1,-1,0,0,1,-1,0.0f,1.0f },//-1,-1,-1
{1,-1,0,0,1,-1,1.0f,1.0f },//1,-1,-1
};


g_pd3dDevice->CreateVertexBuffer( 4*sizeof(Vertex),0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL );
void *pVertices = NULL;


g_pVB->Lock( 0, sizeof(g_cubeVertices), (void**)&pVertices, 0 );
memcpy( pVertices, g_cubeVertices, sizeof(g_cubeVertices) );
g_pVB->Unlock();


D3DXCreateTextureFromFile( g_pd3dDevice,Text, &g_pTexture );


g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
g_pd3dDevice->SetTexture( 0, g_pTexture );
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(Vertex) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

5 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
22 déc. 2005 à 22:51
Tu veux appliquer une texture de taille raisonnable sur un terrain
immense et tu ne vois pas comment faire pour ne pas qu'il s'étire
énormement ?



C'est ce que je crois comprendre d'où:

Vertex g_cubeVertices[] =

{

{-1,1,0,0,1,-1,0.0f,0.0f },

{1 ,1,0,0,1,-1,n,0.0f },

{-1,-1,0,0,1,-1,0.0f,n},

{1,-1,0,0,1,-1,n,n },

};



avec supérieur à 1.

Plus n est grand, moins la texture sera étiré car plus elle sera dupliquée.



La texture doit cependant avoir une caractéristique: collées bout à bout, tu ne dois pas pouvoir trouver les bords des textures.

Google -> tiled textures



Si tu veux agrandir le carré qui contient la texture, modifie les coordonnées x,y,z directement.
3
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
22 déc. 2005 à 12:13
Apparement ton format de vertex est le suivant:



float position coordonnée x

float position coordonnée y

float position coordonnée z

float composante normale nx


float composante normale ny


float composante normale nz

float coordonnée texture u

float coordonnée texture v



Multiplie par 2 les coordonnées textures, et visualise le résultat, tu comprendras tout seul.

En fait, pour chaque pixel sur ton écran, la carte graphique lui
affecte un pixel de la texture en fonction des coordonnées textures des
points qui constituent la face par interpolation linéaire.



(u,v) = (0,0) coorespond au coin haut gauche de la texture

(u,v) = (1,0) coorespond au coin haut droit de la texture

(u,v) = (1,1) coorespond au coin bas droit de la texture

(u,v) = (0,1) coorespond au coin bas gauche de la texture



donc (0.5, 0.5) est le centre etc...



Ca s'appelle du tiling.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
22 déc. 2005 à 12:35
Oups, l'essenciel is missing !



si u (ou v) = 2.34f, u (ou v) est interprété comme 0.34f.

En gros seule la partie décimale est prise en compte sauf pour les
valeurs sans parties décimales non nulles (qui équivalent à 1.0f).



Donc pour afficher n*n textures sur ton quad,

Vertex g_cubeVertices[] =

{

{-1,1,0,0,1,-1,0.0f,0.0f },//-1,1,-1

{1 ,1,0,0,1,-1,n,0.0f },//1,1,-1

{-1,-1,0,0,1,-1,0.0f,n},//-1,-1,-1

{1,-1,0,0,1,-1,n,n },//1,-1,-1

};
0
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
22 déc. 2005 à 12:56
Oups j'ai du mal m'exprimé.
Ce que je veut faire c'est un sol,le terrain fera une certaine taille donc je voudrai reproduire la texture.
(Merci pour ton aide je m'en servirai pour le ciel !).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
23 déc. 2005 à 23:41
Merci de ton aide.
0
Rejoignez-nous