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

DirectX Discussion :

[DirectGraphics][C#] Transparence opaque


Sujet :

DirectX

  1. #1
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut [DirectGraphics][C#] Transparence opaque
    Bonjour,

    J'ai un fichier bitmap représentant une image classique, avec dedans une zone bleu pur que je veux par le suite afficher transparente.

    je la charge de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Texture = TextureLoader.FromFile(m_device, location, 0, 0, 0, Usage.None, Format.Unknown, Pool.Managed, Filter.Linear, Filter.Linear, Color.Blue.ToArgb(), ref l_imageInformation);
    Je l'affiche comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m_sprite.Begin(SpriteFlags.None);
                m_sprite.Draw2D(l_image.Texture, srcRect, dstRect, new Point(dstRect.X*l_image.Width/dstRect.Width, dstRect.Y*l_image.Height/dstRect.Height), Color.White);
                m_sprite.End();
    la zone que je voulais transparente ressort noire et opaque, le reste de l'image s'affiche correctement.

    késsé kispasse ?
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu n'as pas activé l'alpha-blending.

  3. #3
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    C'est ca, manquait ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                l_device.RenderState.AlphaTestEnable  = true;
                l_device.RenderState.AlphaFunction = Compare.NotEqual;
    mais maintenant, ceci :

    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
     
                if (m_device == null)   return;
     
                l_rectangleVertices[0].X = x;
                l_rectangleVertices[0].Y = y;
                l_rectangleVertices[0].Z = 0;
                l_rectangleVertices[0].Color = Color.Blue.ToArgb();
                l_rectangleVertices[1].X = x+width;
                l_rectangleVertices[1].Y = y;
                l_rectangleVertices[1].Z = 0;
                l_rectangleVertices[1].Color = Color.Blue.ToArgb();
                l_rectangleVertices[2].X = x+width;
                l_rectangleVertices[2].Y = y+height;
                l_rectangleVertices[2].Z = 0;
                l_rectangleVertices[2].Color = Color.Blue.ToArgb();
                l_rectangleVertices[3].X = x;
                l_rectangleVertices[3].Y = y+height;
                l_rectangleVertices[3].Z = 0;
                l_rectangleVertices[3].Color = Color.Blue.ToArgb();
                l_rectangleVertices[4].X = x;
                l_rectangleVertices[4].Y = y;
                l_rectangleVertices[4].Z = 0;
                l_rectangleVertices[4].Color = Color.Blue.ToArgb();
     
                m_device.VertexFormat = CustomVertex.PositionColored.Format;
                if (full)
                    m_device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, l_rectangleVertices);
                else
                    m_device.DrawUserPrimitives(PrimitiveType.LineStrip, 4, l_rectangleVertices);
    s'affiche toujours en noir.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il faut aussi spécifier le mode d'alphablending : src_alpha pour la source, et inv_src_alpha pour la destination (je ne connais pas la syntaxe en C#).

    Fais aussi attention à la façon dont va agir la couleur de tes vertices sur la couleur finale, si tu ne veux que la couleur de la texture alors met plutôt du blanc, ou désactive la via les bons renderstates.

  5. #5
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    j'ai rajouté alpha source et destination, sans vraiment comprendre ce que je fais, mais bon ca ne change rien ni en mieux ni en moins bien.

    En fait quand je dessine des rectangles via des vertices, la couleur est "aléatoire" on va dire, de temps en temps c'est transparent, des fois violet foncé, des fois de la bonne couleur, je ne comprends pas quoi désactiver et q_uand pour que la couleur soit tout le temps bien celle que j'ai spécifiée.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Peut-être devrais-tu trouver un bon tutoriel plutôt que d'y aller à tâtons ? L'alpha-blending / transparence ça doit se trouver facilement.

  7. #7
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Il faut mettre cette ligne de code apres l'appel à DrawUserPrimitive qui a servit à afficher une texture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_device.SetTexture(0, null);
    Merci Loulou24
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Objet opaque traversant un objet transparent
    Par djtinou666 dans le forum WebGL
    Réponses: 5
    Dernier message: 06/06/2013, 20h16
  2. Ecriture opaque sur fond transparent
    Par Une.Personne dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/03/2013, 00h10
  3. [AC-2003] Formulaire transparent et contrôle opaque
    Par DeFCrew dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2009, 09h29
  4. Le TImage transparent est bien opaque !
    Par peter27x dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2008, 09h08
  5. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06

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