Bonjour à tous,
Voilà, j'essaie de m'amuser avec Directx et l'importation de modeles 3D. Le problème, c'est que je stocke mes modeles dans un objet ModeleX, et que j'utilise la fonction suivante pour afficher le resultat. Ca marche sans problème, sauf que mes modeles sont affichés dans l'ordre de leur création. Alors je voulais savoir si m méthode de rendu était correcte, ou si je devrais plutot tout stocker dans un vertexbuffer, puis le rendre... quelqu'un aurait une idée de la façon de procéder pour gérer les objets qui cachent les autres ?
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
21
22
23
24
25
26
27
28
29
30
31
32
33 BOOL AfficheUnivers(void) { if(FAILED(pd3dDevice->Clear(0,0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0))) return FALSE; pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE); if(PresenceCamera==TRUE) // Si il y a une camera, on peut afficher le reste { pd3dDevice->SetRenderState(D3DRS_LIGHTING, TRUE); pd3dDevice->BeginScene(); // debut de la scene vector<ModeleX>::iterator aff; aff=ListeModeleX.begin(); for(int i=0;i<ListeModeleX.size();i++) // Affichage des ModeleX { if(i>0) aff++; pd3dDevice->SetRenderState(D3DRS_SHADEMODE, aff->DonneShading()); pd3dDevice->SetRenderState(D3DRS_FILLMODE, aff->DonneMode()); for(DWORD j=0;j<aff->DonneNombreMateriau();j++) { pd3dDevice->SetMaterial(aff->DonneMateriau(j)); aff->DessinePartie(j); } } pd3dDevice->EndScene(); }
à noter que DessinePartie(i), est équivalent à DrawSubset(i).
Partager