Tu doit créée un objet avec une forme et y appliquée ta texture.
La forme la plus simple est un plan carré.
LPDIRECT3DVERTEXBUFFER9 m_taforme;
LPDIRECT3DTEXTURE9 m_tatexture;
déclare aussi un Vertex comme ca :
Initialise comme ca :
struct VERTEX
{
D3DXVECTOR3 p;
FLOAT tu, tv;
static const DWORD FVF;
};
const DWORD VERTEX::FVF = D3DFVF_XYZ | D3DFVF_TEX1;
Dans ta procedure d'initialisation:
=>ta texture c'est fait
if( FAILED( peripherique3D->CreateVertexBuffer( 4*sizeof(VERTEX),
D3DUSAGE_WRITEONLY, VERTEX::FVF,
D3DPOOL_MANAGED, &m_taforme, NULL ) ) )
return E_FAIL;
VERTEX* v;
m_taforme->Lock( 0, 0, (void**)&v, 0 );
v[0].p = D3DXVECTOR3(-1000.0f, 0.0f, 0.0f );
v[1].p = D3DXVECTOR3(-1000.0f, 1000.0f, 0.0f );
v[2].p = D3DXVECTOR3( 1000.0f, 0.0f, 0.0f );
v[3].p = D3DXVECTOR3( 1000.0f, 1000.0f, 0.0f );
v[0].tu = 0.0f; v[0].tv = 147/256.0f;
v[1].tu = 0.0f; v[1].tv = 0.0f;
v[2].tu = 1.0f; v[2].tv = 147/256.0f;
v[3].tu = 1.0f; v[3].tv = 0.0f;
m_taforme->Unlock();
dans ton rendu tu fait :
peripherique3D->SetTexture( 0, m_ta texture );
peripherique3D->SetFVF( VERTEX::FVF );
peripherique3D->SetStreamSource( 0, m_taforme, 0, sizeof(VERTEX) );
peripherique3D->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
La difficulté est la car il ne suffit pas de charger une image.
=>Les informations de formes sont chargé à ta carte graphiques et peuvent être perdu si la fenètre a bouger.
Il faut donc invalidé et restoré les données de ta forme.
=> avant de quitter ton application, tu doit détruire les informations de ta forme par un SAFE_DELETE.
=> Afficher à l'écran , c'est lui donnée des infomations genre positions dans l'espace, position de l'oeil(ou dit caméra) et position du plan de vue. c'est a dire travailler avec des vecteurs 3D, faire les produit scalaire, etc etc
l'auberge n'est pas loin de chez toi mais tu n'est pas sorti encore. ( euh c'est p tete pas ca la sitation.)
DIRECT_SANTI_3DX9