Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 27 déc. 2004 à 23:16
Salut,
J'ai l'impression que tu veux afficher des sprites à l'écran et que tu passes par des vertex et index buffer...
Si tu veux utiliser des sprites, sache qu'il existe une classe dans DirectX extremement utile pour les sprites: ID3DXSprite
Elle permet de faire des rotations, translations, zoom, d'utiliser TRES facilement la transparence, les couleurs clefs....
m_pTileSprite->Draw(m_pTileTexture, // texture
&scrRect, // zone de la texture a afficher
&echelle, // 1/zoom en gros
¢reDeRotation, 0.0f,
&translation, // position globale du coin
modColor ); // alpha + couleur
m_pTileSprite->Release();
Super simple, nan?
Sinon, si tu veux vraiment utiliser des vertex, tu peux soit creer un tableau de vertex et les remplir en boucle (dans ce cas pas besoin de creer plusieurs index buffer).
Soit tu n'en cree qu'un que tu transformes et affiches 300 fois, un par un en utilisant "lpDirect3DDevice9->SetTransform( D3DTS_WORLD, maticeTransEnv3D );"
avec maticeTransEnv3D la matrice de transformation des vertices (une par objet).
Juste avant l'affichage sur le backbuffer, la carte vidéo va modifier la position des vertices en les multipliant par la matrice.
En gros tu affichera toujours le meme objet mais a des positions differentes.
J'ai forcement pas été clair. N'hesite pas a me demander des details.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 27 déc. 2004 à 23:17
Salut,
J'ai l'impression que tu veux afficher des sprites à l'écran et que tu passes par des vertex et index buffer...
Si tu veux utiliser des sprites, sache qu'il existe une classe dans DirectX extremement utile pour les sprites: ID3DXSprite
Elle permet de faire des rotations, translations, zoom, d'utiliser TRES facilement la transparence, les couleurs clefs....
m_pTileSprite->Draw(m_pTileTexture, // texture
&scrRect, // zone de la texture a afficher
&echelle, // 1/zoom en gros
¢reDeRotation, 0.0f,
&translation, // position globale du coin
modColor ); // alpha + couleur
m_pTileSprite->Release();
Super simple, nan?
Sinon, si tu veux vraiment utiliser des vertex, tu peux soit creer un tableau de vertex et les remplir en boucle (dans ce cas pas besoin de creer plusieurs index buffer).
Soit tu n'en cree qu'un que tu transformes et affiches 300 fois, un par un en utilisant "lpDirect3DDevice9->SetTransform( D3DTS_WORLD, maticeTransEnv3D );"
avec maticeTransEnv3D la matrice de transformation des vertices (une par objet).
Juste avant l'affichage sur le backbuffer, la carte vidéo va modifier la position des vertices en les multipliant par la matrice.
En gros tu affichera toujours le meme objet mais a des positions differentes.
J'ai forcement pas été clair. N'hesite pas a me demander des details.