Bonjour,
Voila, en voulant afficher 2 meshes et faire des tests de collision, un autre probleme est apparu. Mon mesh de droite est incapable de masquer ces faces et laisser apparaitre completement celui qui est devant par rapport a la camera
Initialisation de mon Device :
Boucle d'affichage :
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 public void InitializeGraphics() { PresentParameters Params = new PresentParameters(); Params.Windowed = true; Params.SwapEffect = SwapEffect.Discard; Params.BackBufferFormat = Format.X8R8G8B8; Params.BackBufferCount = 2; device = new Microsoft.DirectX.Direct3D.Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, Params); device.RenderState.ZBufferEnable = true; Cube1 = new mesh("D:\\Mes Document\\Visual Studio 2005\\Projects\\D3DX\\Cube.x", device, 7, 0, 0); Cube1.CreateTexture("D:\\Mes Document\\Visual Studio 2005\\Projects\\D3DX\\D3DX\\TextureStone.jpg"); Cube2 = new mesh("D:\\Mes Document\\Visual Studio 2005\\Projects\\D3DX\\Cube.x", device,1,0,0); }
(je precise que si j'inverse l'ordre l'affiche du Cube1 et du Cube2 le probleme est tout simplement inverser)
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 public void Render() { device.Clear(ClearFlags.Target, Color.FromArgb(60, 60, 70), 1f, 0); device.BeginScene(); SetupMatrices(); SetupLights(); Cube2.AfficherMesh(); Cube1.AfficherMesh(); device.EndScene(); device.Present(); }
Affichge d'un mesh :
Comment rectifier ce probleme ?
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 public void AfficherMesh() { Matrix SaveWorld = device.Transform.World; device.Transform.World = Matrix.RotationYawPitchRoll(rY, rX, rZ) * Matrix.Translation(X, Y, Z); for (int i = 0; i < materials.Length; ++i) { if (textures[i] != null) { device.SetTexture(0, textures[i]); } device.Material = materials[i]; Object.DrawSubset(i); } device.Transform.World = SaveWorld; }
Merci d'avance pour vos reponse
Partager