Bon il est vrai que je débute en DirectX 8 mais j'ai eu beau passer mon après midi à faire tous les tutaux du net j'ai toujours pas solutionné mon problème. Le voici :
Sous Visual C++ avec DirectX8 j'ai un bête plateau rectangulaire (comme une planche de bois) avec des trous. Je le charge à partir d'un .x, je le fait tourner suivant Y comme suit :
Jusque-là ça marche. Mais le problème c'est que juste au dessus je déclare une lumière comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 D3DXMatrixRotationY(&matPlateau,(timeGetTime()/10)/360.0f); g_pd3dDevice->SetTransform( D3DTS_WORLD, &matPlateau ); for(i=0; i<g_dwNumPlateauMaterials; i++ ) { // Set the material and texture for this subset g_pd3dDevice->SetMaterial( &g_pMeshPlateauMaterials[i] ); g_pd3dDevice->SetTexture( 0, g_pMeshPlateauTextures[i] ); // Draw the mesh subset g_pMeshPlateau->DrawSubset( i ); }
Et mon problème est que la lumière tourne également avec le plateau, résultat on al'impression de tourner autour du plateau et non d'un plateau qui tourne sur lui même. Le plus bizarre c'est que j'ai créé un deuxième objet témoin qui bouge pas, et sur lui la lumière est fixe sans tourner???
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 D3DXVECTOR3 vecDir; D3DLIGHT8 light; ZeroMemory( &light, sizeof(D3DLIGHT8) ); light.Type = D3DLIGHT_DIRECTIONAL; light.Diffuse.r = 2.0f; light.Diffuse.g = 2.0f; light.Diffuse.b = 2.0f; vecDir = D3DXVECTOR3(40.0f, -60.0f, 80.0f); D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir ); light.Range = 1.0f; g_pd3dDevice->SetLight( 0, &light ); g_pd3dDevice->LightEnable( 0, TRUE); g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
AU SECOUR, la scène n'est pas cohérente du tout.
Merci pour le coup de main, je dois sûrement oublié quelque chose...![]()
Jonathan
Partager