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

XNA/Monogame Discussion :

Problème de transparence..


Sujet :

XNA/Monogame

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 72
    Points
    72
    Par défaut Problème de transparence..
    Salut à tous ! Depuis quelque jours, mon XNA se comporte de manière bizard. Je fais un rendu tout bête d'un model .fbx (le tank du framework DirectX). Voici mon code :

    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
     
            public void Draw(CCamera Camera)
            {
                Matrix[] transforms = new Matrix[MeshModel.Bones.Count];
                MeshModel.CopyAbsoluteBoneTransformsTo(transforms);
     
                Matrix tmpTransform = Matrix.CreateFromYawPitchRoll(MeshRotation.Y, MeshRotation.X, MeshRotation.Z)
                                        * Matrix.CreateScale(MeshScale)
                                        * Matrix.CreateTranslation(MeshPosition);
     
                Matrix Projection = Camera.GetProjectionMatrix();
                Matrix View = Camera.GetViewMatrix();
     
                foreach (ModelMesh mesh in MeshModel.Meshes)
                {
                    foreach (BasicEffect ModelShader in mesh.Effects)
                    {
                        ModelShader.EnableDefaultLighting();
     
                        ModelShader.View = View;
                        ModelShader.Projection = Projection;
                        ModelShader.World = transforms[mesh.ParentBone.Index] * tmpTransform;
                    }
     
                    mesh.Draw();
                }
     
            }
    La première frame affiche le tank correctement et a partir de la 2nd, il l'affiche avec un effet bizard de semi-transparence. Je n'ai pourtant pas touché au renderstates, ni avant, ni après le rendu.

    Pour tous ceux qui ont déjà rencontré ce problème... Merci d'avance !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Idée à la volée : Verifie que tu clear bien le buffer de profondeur.
    De mémoire une ligne du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    graphics.Clear(ClearOptions.Depth | ClearOptions.Target, Color.Black, 1.0f, 0f);
    ( Je dit bien de mémoire )( Ton problème ressemble beaucoup à celui que l'on peut avoir lorsque l'on oublie de faire le clear sur le buffer de profondeur )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Si il est bien affiché à la première frame et plus après, ça doit malgré tout être à cause d'un renderstate. J'ai eu le tour une fois.

    Tu n'utilises pas le spritebatch par hasard? Jettes un oeil ici, il indique les renderstates modifiés par ce dernier.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Je pense ( et j'espère ) qu'il a trouvé la solution au bout d'un mois
    Mais ta solution, zoubidaman semble beaucoup plus logique
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Oups oui, je n'avais pas vu la date...

    Je pensais ce forum un peu plus animé

Discussions similaires

  1. [ImageList] problème de transparence
    Par Rayek dans le forum Delphi
    Réponses: 7
    Dernier message: 19/05/2006, 11h12
  2. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  3. Réponses: 5
    Dernier message: 18/03/2005, 20h10
  4. [DX9] [Debutant] Problème de transparence :(
    Par SekYo dans le forum DirectX
    Réponses: 5
    Dernier message: 10/09/2004, 14h19
  5. Réponses: 8
    Dernier message: 06/07/2004, 18h30

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