IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs 3D Discussion :

[C#][DirectX] Probleme affichage Meshes


Sujet :

Moteurs 3D

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [C#][DirectX] Probleme affichage Meshes
    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 :
    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);
     
            }
    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
     
    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();
            }
    (je precise que si j'inverse l'ordre l'affiche du Cube1 et du Cube2 le probleme est tout simplement inverser)

    Affichge d'un mesh :
    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;
            }
    Comment rectifier ce probleme ?

    Merci d'avance pour vos reponse

  2. #2
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 296
    Points
    296

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour la reponse, cela m'a permi de resoudre mon probleme

    pour ceux qui aurais le même probleme voici la solution que jai appliquer :

    En tout premier initialiser votre PresentParameters avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Params.BackBufferFormat = Format.X8R8G8B8;
    Params.PresentationInterval = PresentInterval.Immediate;
    Params.AutoDepthStencilFormat = DepthFormat.D16;
    Params.BackBufferFormat = Format.R5G6B5;
    Params.PresentFlag = PresentFlag.DiscardDepthStencil;
    Params.EnableAutoDepthStencil = true;
    Puis on initialize le device :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    device = new Microsoft.DirectX.Direct3D.Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, Params);
    device.RenderState.ZBufferEnable = true;
    device.RenderState.ZBufferWriteEnable = true; 
    device.RenderState.ZBufferFunction = Compare.LessEqual;
    Et n'oublier pas lors dans la boucle d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.Blue, 1.0f, 0);
    Voila, en esperant pouvoir aider ceux qui on eu le même problême que moi

    Et merci beaucoup ShadowTzu pour m'avoir repondu.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2008, 09h06
  2. directx managed affichage simple mesh
    Par t-die dans le forum DirectX
    Réponses: 3
    Dernier message: 24/05/2006, 09h52
  3. problem affichage avec HTML::TableExtract
    Par rootdaoud dans le forum Web
    Réponses: 2
    Dernier message: 04/07/2005, 19h35
  4. Probleme affichage noir quand Build/Compile
    Par balabi dans le forum MFC
    Réponses: 3
    Dernier message: 01/06/2005, 16h12
  5. Probleme affichage dans tableau selon requête
    Par moulette85 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 01/03/2005, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo