salut,

Je cherche à afficher un sprite en permanence au centre de l'ecran (un viseur en fait). La question a déjà été posée sur le forum mais les liens donnés ne fonctionnent plus.

En fait j'utilise un quad texturé comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct _SVERTEX{
 
   D3DXVECTOR3 p ;
   DWORD color;
 
};
 
_SVERTEX *v;
...
v[0].p = D3DXVECTOR3( 1.0f, 1.0f, 1.0f );
v[0].color = this->m_dwColor; 
v[1].p = D3DXVECTOR3( 1.0f, -1.0f, 1.0f ); 
v[1].color = this->m_dwColor; 
v[2].p = D3DXVECTOR3( -1.0f, -1.0f, 1.0f ); 
v[2].color = this->m_dwColor; 
v[3].p = D3DXVECTOR3( -1.0f, 1.0f, 1.0f ); 
v[3].color = this->m_dwColor; 
...
et pour le rendu :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
D3DXMATRIX matWorld;
D3DXMatrixIdentity( & matWorld );
 
pd3dDevice->SetTransform( D3DTS_VIEW, & matWorld );
pd3dDevice->SetTransform( D3DTS_WORLD, & matWorld );
 
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_LIGHTING,  FALSE );
pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
 
pd3dDevice->SetTexture( 0, this->m_pTexture );
pd3dDevice->SetStreamSource( 0, this->m_pVB, 0 , sizeof ( _SVERTEX ) );
pd3dDevice->SetFVF( D3DFVF_XYZ | D3DFVF_DIFFUSE );
pd3dDevice->DrawPrimitive( D3DPT_POINTLIST, 0, 4 );
 
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_LIGHTING,  TRUE );
En fait rien ne s'affiche. Je ne suis pas certain qu'initialiser la matrice du monde et la matrice de vue avec la matrice identité soit la bonne méthode pour centrer un sprite. D'ou vient le problème?

Merci pour votre aide