[DIRECT3D][C++] centrer un sprite
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:
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:
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 :)