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 :
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 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; ...
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?
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 );
Merci pour votre aide![]()
Partager