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 :

Problème de rendu 2D


Sujet :

DirectX

  1. #1
    Membre du Club Avatar de Freakazoid
    Profil pro
    Inscrit en
    mars 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 116
    Points : 65
    Points
    65
    Par défaut Problème de rendu 2D
    J'ai un petit problème avec mon rendu sous Direct3D.
    En fait quand je fait le rendu d'une image avec transparence (j'ai pas verifié sans), Direct3D me rajoute une bordure sur les contour de mon image et les couleurs comme si il voulais faire de l'antialiasing.
    Mon image n'est pourtant pas étiré, ni retreci. Au final je me retrouve avec un rendu à l'ecran différent de mon bitmap d'origine. Un petit screen



    pour pas faire un post trop long je met un lien vers mon code mais je pense que le problème vient soit de l'initialisation de Direct3D soit du chargement des images soit du rendu mais je n'arrive pas a trouvé.

    http://perso.wanadoo.fr/vincent.deraet/Moteur.zip

  2. #2
    Membre du Club Avatar de Freakazoid
    Profil pro
    Inscrit en
    mars 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 116
    Points : 65
    Points
    65
    Par défaut
    voila mon code d'initialisation
    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
                D3D_Device->SetRenderState(D3DRS_ALPHATESTENABLE, true);
                D3D_Device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_NOTEQUAL);
                D3D_Device->SetRenderState(D3DRS_ALPHAREF, 0x00);
                D3D_Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
                D3D_Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
                D3D_Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
     
                D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAOP, D3DTOP_MODULATE);
                D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
                D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
     
                D3D_Device->SetRenderState(D3DRS_LIGHTING, FALSE);
     
                D3D_Device->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO, &D3D_BackBuffer_Surface);
     
                D3DXMatrixOrthoLH(&D3D_Ortho2D, (float)Width, (float)Height, 0.0f, 1.0f);
                D3DXMatrixIdentity(&D3D_Identity);
     
                D3D_Device->SetTransform(D3DTS_PROJECTION, &D3D_Ortho2D);
                D3D_Device->SetTransform(D3DTS_WORLD, &D3D_Identity);
                D3D_Device->SetTransform(D3DTS_VIEW, &D3D_Identity);

  3. #3
    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
    Salut

    Tu as désactivé le filtrage de textures lors du chargement et/ou du rendu ?

  4. #4
    Membre du Club Avatar de Freakazoid
    Profil pro
    Inscrit en
    mars 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 116
    Points : 65
    Points
    65
    Par défaut
    Heu je suis pas sur de ce qu'es le filtrage.
    Voila ma fonction de chargement (désoler pour la longeur du post).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void D3D_ChargerImage(  char*                   FileName,
                                    LPDIRECT3DTEXTURE8*     pTexture,
                                    LPDIRECT3DSURFACE8*     pSurface,
                                    DWORD                   ColorKey,
                                    bool*                   ReturnValue)
    {
        if (D3DXCreateTextureFromFileEx(D3D_Device, FileName, 0, 0, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, ColorKey, NULL, NULL, pTexture) == D3D_OK)
        {
            if ((*pTexture)->GetSurfaceLevel(0, pSurface) != D3D_OK)
                *ReturnValue = false;
        }
        else
            *ReturnValue = false;
    }

  5. #5
    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
    Essaie de mettre le paramètre Filter de D3DXCreateTextureFromFileEx à D3DX_FILTER_NONE, et si ça ne suffit pas désactive aussi les filtres D3DSAMP_MINFILTER / D3DSAMP_MAGFILTER.

  6. #6
    Membre du Club Avatar de Freakazoid
    Profil pro
    Inscrit en
    mars 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 116
    Points : 65
    Points
    65
    Par défaut
    Quand je met D3DX_FILTER_NONE je me retrouve avec une image étiré (cf http://www.developpez.net/forums/viewtopic.php?t=214416) mais le problème de rendu est resolu.
    Je ne sait plus trop quoi faire. Je vais essayer de trouve une autre méthode de rendu (DirectDraw ct vraiment plus simple).

  7. #7
    Membre du Club Avatar de Freakazoid
    Profil pro
    Inscrit en
    mars 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 116
    Points : 65
    Points
    65
    Par défaut
    Heu je trouve pas trop d'alternative donc si quelqu'un peut se penché sur mon probème j'ai mis mon code source à disposition dans le 1er post.

Discussions similaires

  1. Problème de rendu
    Par lvr dans le forum IE
    Réponses: 6
    Dernier message: 25/04/2007, 19h14
  2. stockage page web dans mysql : problème de rendu
    Par circajet7 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 29/03/2007, 10h25
  3. Problèmes de rendu incongru
    Par jacquesprogram dans le forum Flash
    Réponses: 14
    Dernier message: 01/10/2006, 11h50
  4. Problème de rendu 16 bits float + MSAA
    Par gybe dans le forum DirectX
    Réponses: 10
    Dernier message: 10/08/2006, 16h24
  5. [wxPython] problème de rendu
    Par tool69 dans le forum wxPython
    Réponses: 5
    Dernier message: 25/09/2005, 19h43

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