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

DevIL Discussion :

[DevIL] Pas de transparence avec les .dds


Sujet :

DevIL

  1. #1
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut [DevIL] Pas de transparence avec les .dds
    Salut

    J'ai un probleme avec DevIL pour charger les fichiers .DDS
    Bon ca charge, mais je n'ai pas la transparences, alors que le fichier .dds l'a (jai regarder avec d'autre viewer)

    Donc je suis en OpenGL, donc de tete, il me semble que je fais un
    GLuint texture = ilGLLoadImage("nom fichier.dds");

    Ensuite je fais un glBindTexture ou je sais plus

    Enfin bref, comment ca se fait que ca marche pas la transparence", malgre que la texture saffiche bien comme il faut, il manque juste la transparence :'(, il y a une facon special pour les .dds?

    Désole de manquer d'exemple de code

  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 : 40
    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 es sûr que c'est la texture qui est mal chargée, et pas l'alpha-blending qui est mal paramétré par exemple ?
    Tu as vérifié que le format interne de ta texture (avec un glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &Format)) contenait bien un canal alpha ?

  3. #3
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    c'est quoi la variable "&format"?

    Sinon, je n'ai pas fait l'instruction que tu as indiqué. Cependant, la texture est bien transparente, car elle le fait sous un visualisteur d'image. Aussi dans le jeu original dont est issu la texture .dds.

    Un parametre ou instructions que j'aurai oublié?

  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 : 40
    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
    c'est quoi la variable "&format"?
    Le but c'était de te donner le nom de la fonction et le paramètre à récupérer, pas de te donner la ligne toute cuite à insérer dans ton code... Regarde la documentation pour savoir comment ça marche et à quoi ça correspond.

    Cependant, la texture est bien transparente, car elle le fait sous un visualisteur d'image. Aussi dans le jeu original dont est issu la texture .dds.
    Je veux bien croire volontiers que l'image possède un canal de transparence, moi je parlais de la texture une fois chargée par ton programme.

    Tu n'as pas non plus parlé de la façon dont tu affichais ta texture.

  5. #5
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    j'utilse les fonction d'OpenGL, la seul fois ou je me sert de DevIL, c'est quand je charge l'image avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GLuint texture;
    texture = ilutGLLoadImage("nom.dds"); //ici
    glBindImage(GL_TEXTURE_2D, texture);
     
    glEnable(GL_TEXTURE);
    glTextCoord2d(1,1);
    Surement que je fais un mauvais mélange et qu'il faut que j'utilise plus de fonction ilut

    Le code n''est pas exact, j'ecris de tete, je ne suis pas chez moi

  6. #6
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    j'en ai marre, j'laisse tombé, j'perd mes soirée essayer de foutre cette foutu transparence, je pige rien a leur fonction, le site de DEvil est mal foutu, avec des jolie erreur 404, et des exemple de code super restrenit

  7. #7
    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 : 40
    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
    Apparemment mes conseils non plus n'ont pas l'air de te plaire... Tant pis

  8. #8
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Voila un code complet, compilable chez moi (si vous avez bien mis les librairies SDL et DevIL)

    Qui affiche la texture. Et je n'ai pas la transparence :'(. Si tu pouvez jeter un coup d'oeil j'en serai ravi

    http://www.savefile.com/files/602402

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    #include <stdlib.h>
    #include <stdio.h>
     
    #include <SDL/SDL.h> // SDL
     
    //#include <GL/gl.h> // OpenGL
    //#include <GL/glu.h>
    //#include <GL/glut.H>
     
    #include <IL/ilut.h>
    #include <IL/devil_internal_exports.h>
     
     
    void dessiner()
    {
        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity( );
     
        glBegin(GL_QUADS);
            glTexCoord2d(0,1);
            glVertex3d(-1,1,0);
            glTexCoord2d(1,1);
            glVertex3d(1,1,0);
            glTexCoord2d(1,0);
            glVertex3d(1,-1,0);
            glTexCoord2d(0,0);
            glVertex3d(-1,-1,0);
        glEnd();
     
        glFlush();
        SDL_GL_SwapBuffers();
    }
     
     
    int main (int argc, char * argv[])
    {
        int continuer = 1;
        SDL_Event event;
        SDL_Surface *ecran;
        ILuint texture1;
        char * nomTexture= {"./Image.dds"};
     
        /* On initialise tout */
        SDL_Init(SDL_INIT_VIDEO);
        ilInit();
        iluInit();
        ilutRenderer(ILUT_OPENGL);
     
        /*Afichage en 3D*/
        ecran = SDL_SetVideoMode(680,460, 32, SDL_OPENGL);
        SDL_WM_SetCaption("Editor v0.1",NULL);
     
        gluOrtho2D(-2,2,-2,2); //Reglage de la taille du repere
        glEnable(GL_TEXTURE_2D); //Active les texture
     
        ilSetInteger(IL_FORMAT_MODE, IL_RGBA);
        ilEnable(IL_FORMAT_SET);
     
        texture1 = ilutGLLoadImage(nomTexture);
        dessiner();
     
        /*Boucle jusqu'a quitter*/
        while (continuer == 1)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                dessiner();
            }
        }
     
       /*On supprime tout*/
        glDeleteTextures (1, &texture1);
        ilShutDown();
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }

  9. #9
    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 : 40
    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'actives pas l'alpha-blending.

  10. #10
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Salut

    Bon le resultat est meilleur, merci.

    Par contre petit soucis, le model est un aussi un peu transparent. En fait j'ai regarder le canal alpha du fichier .dds, et il y a plusieur degree de noir, et lui il considere que c'est tout ces differents degree de noir qu'il faut mettre en transparent-> plus c'est noir et plus ca sera transparent.

    Or moi ce que je veux, c'est que juste le noir foncé soit transparent du canal alpha, donc couleur (0,0,0). Donc definir cette couleur comme tranparente.

    Je sais pas si c'est possible, et si oui, comment faire.

  11. #11
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Re

    C'est bon, j'ai reussi, en lisant dans la faq

    au lieu de mettre le blend, j'ai mis l'apha test.

    glEnable(GL_ALPHA_TEST);
    glAlphaFunc(GL_GREATER, 0.0f);

    Ca fait que tout chaque pixel noir foncé de ma couche alpha correspondra a une invisibiltié
    Par contre, la couche alpha est mal foutu, ca fait que l'image n'est pas correct, c'est pas grave, je me debrouillerai

    Merci

  12. #12
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 538
    Points : 5 224
    Points
    5 224
    Par défaut
    Citation Envoyé par Sacha999
    Par contre, la couche alpha est mal foutu, ca fait que l'image n'est pas correct, c'est pas grave, je me debrouillerai
    tu peux aussi mettre une valeur plus grande dans la fonction glAlphaFunc(GL_GREATER, 0.0f)
    prendre des pixels noir/gris foncé (avec 0.1f par exemple)

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

Discussions similaires

  1. pas de son avec les écouteurs branchés
    Par pro132000 dans le forum Windows 8
    Réponses: 2
    Dernier message: 04/07/2013, 11h47
  2. pas de transparence avec mon bitmap
    Par franckMenant dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2010, 16h38
  3. Pas d'affichage avec les VBO
    Par GLDavid dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/06/2009, 17h55
  4. Réponses: 8
    Dernier message: 07/01/2008, 23h36
  5. probleme avec les exposions et transparence ?
    Par ilimo dans le forum DirectX
    Réponses: 11
    Dernier message: 29/05/2004, 01h24

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