Bonjour, désolé je suis un débutant directX et de la 3D en général.
Je cherche en fait une bonne explication sur le mapping de texture.
Mon problème est le suivant :
j'ai un mesh d'une sphère que je créé grâce à D3DXCreateSphere, j'applique ensuite une texture dessus avec le code suivant :
A vrai dire, je n'ai pas trop compris comment fonctionne cette matrice, j'ai trouvé ça dans un tutorial fournit dans le SDK de directX, j'ai bidouillé un peu les valeurs et la texture s'affiche correctement. Cependant lorsque j'applique une rotation sur ma sphère la texture ne tourne pas avec
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 (*m_pDevice)->SetTexture( 0, m_pTexture ); (*m_pDevice)->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); (*m_pDevice)->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); (*m_pDevice)->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); (*m_pDevice)->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE ); D3DXMATRIXA16 mat; mat._11 = 1.0f; mat._12 = 0.00f; mat._13 = 0.00f; mat._14 = 0.00f; mat._21 = 0.00f;mat._22 =-1.0f ; mat._23 = 0.00f; mat._24 = 0.00f; mat._31 = 0.00f;mat._32 = 0.00f; mat._33 = 1.00f; mat._34 = 0.00f; mat._41 = 1.0f; mat._42 = 1.0f ; mat._43 = 0.00f; mat._44 = 1.00f; (*m_pDevice)->SetTransform(D3DTS_TEXTURE0, &mat); (*m_pDevice)->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 ); (*m_pDevice)->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_SPHEREMAP);![]()
On voit bien que la sphère tourne parce que ca provoque des petits bugs d'affichage (comme si la texture tremble ...). Si vous avez une idée ou bien une URL d'un site bien fait expliquant le mapping de texture je suis preneur. Merci d'avance !
Partager