PDA

Voir la version complète : Multitexturing DirectX


Rom1Mars
30/10/2005, 12h47
Je fais un appel aux ames charitables qui daigneront bien m'expliquer le fonctionnement des SetTextureStageState. En effet j'ai essayé de prendre des bouts de code de ça et là pour réussir le multitexturing, impossible...

Tout d'abord dans le "isDeviceAcceptable" j'ai bien vérifié que ma carte vidéo supportait le multitexturing :

if(!(pCaps->MaxSimultaneousTextures > 1)) //number of textures
{
MessageBox(NULL,
L"single pass multitexturing not supported!",
L"CheckDeviceCaps()",
MB_OK);
}

Au préalablement dans un "init" j'ai bien mis :
TCHAR strTexture[256]=L"test_grass.png";
D3DXCreateTextureFromFile( pd3dDevice,strTexture,&m_pTexture1);
TCHAR strTexture2[256]=L"test_grass2.png";
D3DXCreateTextureFromFile( pd3dDevice,strTexture,&m_pTexture2);

j'ai bien précisé que j'avais 2 textures : D3DFVF_CHUNK_VERTEX =
(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2)
et j'ai mis la meme valeur dans u2,v2 que celle precedemment utilisée dans u1,v1.

Et enfin j'utilise ce morceau de code que j'ai rencontré 2 fois sur le net (je me dis donc qu'il doit etre bon...) :
m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);

Et ça marche pas... seule la premiere texture est visible :00000012:

Donc tout d'abord quelqu'un pourrait il m'expliquer avec précision et clairement le fonctionnement de ces SetTextureStageState et en particulier du 2eme et 3eme argument.
Et enfin si quelqu'un aurait une idée du problème que je rencontre ? :00000026:

Merci :00000025:

Ruffi
30/10/2005, 14h14
Ben non, tu ne lui a pas dit que tu utilisait 2 coordonnées de textures.

ta declaration de ton FVF devrait plutot ressembler à ça :

D3DFVF_CHUNK_VERTEX =
(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 | D3DFVF_TEX2)

Rom1Mars
30/10/2005, 15h02
J'ai vu sur ce tutorial la declaration du FVF : http://www.two-kings.de/tutorials/dxgraphics/dxgraphics12.html

J'ai fait comme tu m as dit, aucun changement...
Mais merci de ton aide :00000023:

Rom1Mars
30/10/2005, 23h01
TCHAR strTexture[256]=L"test_grass.png";
D3DXCreateTextureFromFile( pd3dDevice,strTexture,&m_pTexture1);
TCHAR strTexture2[256]=L"test_grass2.png";
D3DXCreateTextureFromFile( pd3dDevice,strTexture,&m_pTexture2);

MAIS QUEL CON !!! :00000032:
looooooool

Comme un connard j'ai laissé strTexture dans le 2eme CreateTextureFromFile au lieu de mettre strTexture2 !!!!!

:00000026: :00000026: :00000026: lol

Lightness1024!
31/10/2005, 15h59
eh oui copier coller ca a toujours ce genre d'effets mdr.
mais bon je dis ca et je ne fait pas mieux lol