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 :

Pb de Text. transp. sur un plan directx 9 c#


Sujet :

DirectX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Pb de Text. transp. sur un plan directx 9 c#
    Bonjour,

    J'ai besoin d'appliquer une texture a un plan qui gererai en partie la transparence. C'est a dire, j'ai une bibliotheque d'image de piscines vu de dessus que j'aimerai integrer dans des photos le probleme est que les piscines n'ont as toutes la meme forme et que je dois gerer la transparence pour chaque pour qu'elle sincruste comme il faut.

    J'ai fait plusieurs essais infructueux comme charger d'abord un bitmap et en effacer une couleur avant d'en faire une texture, charger differents types de fichier (.png par exemple), et j'ai essayer aussi d'utiliser le colorkey lors du chargement de la texture.

    J'utilise directx 9 plus la mise a jour summer 2004 et c# sur visual studio .net 2003

    en vous remerciant.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    salut,

    Le seul moyen de faire de la transparence c'est d'utiliser un matériau transparent (sous 3dsmax par exemple) avec une texture en png. C'est ce que j'ai fait dans mon projet.

    Et voici le code que j'utilise pour que la transparence soit gérée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    device.RenderState.AlphaBlendEnable = true;
    device.RenderState.AlphaFunction = Compare.Greater;
    device.RenderState.AlphaTestEnable = true;
    device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
    device.RenderState.SourceBlend = Blend.SourceAlpha;
    device.RenderState.DiffuseMaterialSource = ColorSource.Material;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Je te remercie de ta réponse mais le probleme que j'ai C qu'il faut que je charge mes textures dynamiquement dans le log.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    backfire > Super merci !
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    using System.Drawing;
    using System.Windows.Forms;
    using Microsoft.DirectX;
    using DXGraphics = Microsoft.DirectX.Direct3D;
     
    // On charge l'image du sprite
     
    public void LoadTextures()
            {
                try
                {                
                    spriteTexture = DXGraphics.TextureLoader.FromFile(device,  @"..\..\..\Media\Images\hero_test2.png");
                }
                catch (Exception e)
                {
                    MessageBox.Show("There has been an error loading the textures:" + e.
     
                ToString(), "oops");
                }
            }
     
    // Et on l'affiche
     
    public void Render()
            {
                if (device == null)
                    return;
     
                // Matrice de décalage pour déplacer les sprites à l'écran
                Matrix QuadMatrix = new Matrix();
                QuadMatrix = Matrix.Identity;
                QuadMatrix.Translate(-1f, 1f, 0f);
     
                // Effacement de l'écran avec une couleur beige (par exemple)
                device.Clear(DXGraphics.ClearFlags.Target, System.Drawing.Color.Beige, 1.0f, 0);
     
                // On commence la scène
                device.BeginScene();
     
                // Rendu du sprite
                device.SetStreamSource(0, vertexBuffer, 0);
     
                device.RenderState.AlphaBlendEnable = true;
                device.RenderState.AlphaFunction = DXGraphics.Compare.Greater;
                device.RenderState.AlphaTestEnable = true;
                device.RenderState.DestinationBlend = DXGraphics.Blend.InvSourceAlpha;
                device.RenderState.SourceBlend = DXGraphics.Blend.SourceAlpha;
                device.RenderState.DiffuseMaterialSource = DXGraphics.ColorSource.Material;
     
                device.SetTexture(0, spriteTexture);
     
                // On met le sprite au milieu
                QuadMatrix.Translate(0, 0, 0f);
                device.SetTransform(DXGraphics.TransformType.World, QuadMatrix);
                device.DrawPrimitives(DXGraphics.PrimitiveType.TriangleFan, 0, 2);
     
                // On termine la scène
                device.EndScene();
                device.Present();
            }

Discussions similaires

  1. [SQL2K] Pb sur un plan de maintenance
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/02/2006, 10h44
  2. Zones de texte désactivées sur internet
    Par Le Pharaon dans le forum Windows 2000/Me/98/95
    Réponses: 3
    Dernier message: 25/01/2006, 12h50
  3. Réponses: 13
    Dernier message: 22/12/2005, 02h14
  4. Insertion d'1 petit texte ciblé sur page .php avec echo
    Par sabine2000 dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2005, 11h31
  5. Réponses: 3
    Dernier message: 29/06/2005, 14h29

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