2010-10-08 7 views
0

Comment puis-je mettre ensemble plus d'une texture sur un cube comme l'avant du cube a une texture différente de l'arrière de celui-ci ....C++ textures directx muliti

je fatigué d'utiliser les étapes mais il DIDN ne fonctionne pas. par exemple, si je veux faire un dé j'aurais dessus serait 1 côté BE2 ..............

D3DXCreateTextureFromFile(d3ddev, //Direct3D Device 
           _T("image.png"),  //File Name 
           &g_texture); //Texture handle 

    d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE); // turn off the 3D lighting 
    d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); // turn off culling 
    d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE); // turn on the z-buffer 
d3ddev->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1); 
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE); 
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE); //Ignored 

    d3ddev->SetTexture(1,g_texture); 

D3DXCreateTextureFromFile(d3ddev, //Direct3D Device 
           _T("images.png"),  //File Name 
           &texture2); //Texture handle 



    d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE); // turn off the 3D lighting 
    d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); // turn off culling 
    d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE); // turn on the z-buffer 
d3ddev->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1); 
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE); 
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE); //Ignored 

d3ddev->SetTexture(0, texture2); 

Répondre

1

Ce que vous faites est de créer une texture et de mettre la 6 faces de dés dans cette texture. Ensuite, pour chaque visage, vous utilisez les UV qui correspondent à la partie de la texture qui a le côté des dés que vous voulez. A défaut de ... vous piochez 6 fois. Une fois pour chaque texture.

La première méthode est de loin la meilleure façon de le faire si vous le pouvez. Il est préférable d'utiliser moins d'appels avec DirectX 9 ...

Modifier: En fait, il y a d'autres façons de le faire. Vous pouvez utiliser une texture de volume et placer chaque face de filière dans une tranche, puis rendre cette tranche sur la face du cube. Vous pouvez également utiliser une texture de cube et la configurer pour que la texture apparaisse sur le visage de votre choix.

La première méthode que j'ai décrite vous donnera probablement, cependant, les meilleures performances.