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

OpenGL Discussion :

Afficher une texture sur un GL_Quads


Sujet :

OpenGL

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut Afficher une texture sur un GL_Quads
    Bonjour,

    Je m'essaie au texturing en OpenGL en C++ et je rencontre un problème à l'exécution de mon programme (la compilation marche parfaitement) : j'ai une boite de message avec le texte suivant : "Failed to open DIB file Image.bmp" alors que Image.bmp existe bien avec le même nom...

    Si quelqu'un pouvais me filer un coup de main ça m'avancerait bien. Merci d'avance !

    Alex

  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
    Problème de chemin peut-être ? Image.bmp se trouve-t-il dans le répertoire courant au moment de l'execution du programme ?

    Ou alors des problèmes de droits ?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Il se trouve bien dans le répertoire courant c'est ça qui est étrange... Pour ce qui concerne les droits je ne pense pas que ça vienne de là.

    Etrange... pourtant j'ai relu deux tuto sur le texturing et tout correspond, il ne devrait pas y avoir le moindre problème à l'exécution ...

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Voici la ligne de code que le débugger mets en évidence en signalant un NullPointerException :

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
    Merci pour votre aide.

  5. #5
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    Normal, si tu obtient "Failed to open DIB file Image.bmp" c est que le fichier n'a pas pu etre chargé donc ton pointeur "texture1" est NULL

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Oui Zoso_ mais pourtant mon image est bien bitmap de taille 64x64

  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 : 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
    Citation Envoyé par alex6891
    Oui Zoso_ mais pourtant mon image est bien bitmap de taille 64x64
    Cela a peu d'importance, s'il ne peut pas ouvrir le fichier... En plus tu nous dis que le debugger s'arrête sur glTexImage2D, ça veut dire qu'après avoir eu l'erreur que tu nous décris ton programme continue ? C'est pas une super bonne idée...

    Montre nous plutôt la ligne qui génère ce message d'erreur.

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Ben justement c'est la seule ligne qui est détectée pour l'erreur, la compilation passe sans problème mais je ne crois pas que le programme continue puisqu'il n'affiche pas la scène...

    Voici ma fonction qui charge la texture (je l'appelle avec le nom du fichier depuis WM_CREATE lors de l'initialisation) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void loadTexture(char* imgFile) 
    {  
    	AUX_RGBImageRec* texture1; 
    	texture1 = auxDIBImageLoad(imgFile); 
    	glGenTextures(1, &texture[0]);  
    	glBindTexture(GL_TEXTURE_2D, texture[0]); 
    	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); 
    	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 
    	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data); 
    }
    Je ne vois pas ce qui cloche ...

  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 : 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
    Je ne vois aucun test ni affichage d'erreur dans ton code. A quel moment et où reçois-tu le message "Failed to open DIB file Image.bmp" :

    A part ça tu devrais au moins tester le retour de auxDIBImageLoad, histoire d'éviter ce genre de contrariété.

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Je reçois "Failed to open DIB file Image.bmp" au moment ou je lance l'exécutable.

  11. #11
    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
    Dans une boîte de dialogue ? Il n'y a que ça d'écrit ? Et ce n'est absolument pas toi qui gère l'apparition de ce message ?

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Non ce n'est pas moi, la "boite de dialogue" porte le titre "Error" (je suis sous visual studio 2003.) Merci
    ps: je galère depuis tout à l'heure et je n'ai toujours pas trouvé la provenance de cette erreur (enfin pour quelle raison magique l'image n'est pas chargée.) !

  13. #13
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    La boite de dialogue est générée par : auxDIBImageLoad
    C'est une fonction de la library AUX.

  14. #14
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Merci pour cette précision Zoso_

    Aucune idée pour m'aider à résoudre ce problème hallucinant

    8)

  15. #15
    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
    Citation Envoyé par Zoso_
    La boite de dialogue est générée par : auxDIBImageLoad
    C'est une fonction de la library AUX.
    Marrant. Surtout pour une bibliothèque portable. Et si jamais on veut traiter l'erreur dans le programme, on ne peut pas se passer de la boîte de dialogue ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    C'est peut etre con mais vérifie que ton répertoire "Working" est bien celui dans lequel se trouve l'image, pqrce que moi j'ai eu des problèmes avec ca

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    En fait tous mes fichiers sont dans le même répertoire, j'ai seulement un sous-répertoire DEBUG dans lequel se trouve l'exécutable que je déplace dans le répertoire du dessus (avec les autres fichiers dont l'image bitmap) pour tester le programme (c'est celui que je déplace que je lance)

  18. #18
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Petite question : est-ce que tu lances l'exécutable depuis l'IDE (F5 ou CTRL + F5 sous VC) ou en double cliquant dessus dans l'explorer ?

    J'ai déjà eu des problèmes en lançant des programmes depuis l'IDE (et seulement dans ce cas), où je devais mettre mes images dans le répertoire racine du projet et non pas avec l'exécutable.

    Sinon je ne vois pas trop.. le code me parait bon aussi.

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Non je ne lance pas l'exécutable à partir de l'IDE

  20. #20
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Ton problème comme on te l'as signalé vient à 95% de chance du fait que la fonction n'arrive pas à trouver l'image...

    Une solution est de tester au préalable si le fichier existe bien (et est mis au bon endroit)

    Ajoute ceci dans le code de ta fonction:
    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
     
    void loadTexture(char* imgFile)
    { 
       AUX_RGBImageRec* texture1;
       FILE *f;
     
       f = fopen(imgFile,"rb");
       if(f!=NULL)
         {
       texture1 = auxDIBImageLoad(imgFile);
       glGenTextures(1, &texture[0]); 
       glBindTexture(GL_TEXTURE_2D, texture[0]);
       glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
       glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
      }
      else
       {
        printf("Erreur dans loadTexture\n");
       printf("Je n'arrive pas à ouvrir le fichier: %s\n",imgFile);
       exit(1);
       }
    }
    Si le programme affiche les deux printf, verifie que le nom du fichier est bien écrit.

    S'il ne les affiche pas mais refait ta boîte de dialogue, tu as un autre problème... Il se peut que le bmp soit simplement corrompu.

    Jc

Discussions similaires

  1. Afficher une texture sur la fenêtre en tailel réelle
    Par Matthieu Brucher dans le forum OpenGL
    Réponses: 17
    Dernier message: 02/07/2008, 12h22
  2. Réponses: 4
    Dernier message: 12/09/2005, 19h23
  3. Afficher une texture "pleine" sur un support non c
    Par Mastero dans le forum DirectX
    Réponses: 20
    Dernier message: 27/01/2005, 13h28
  4. Afficher une texture plein ecran en 2D
    Par venomelektro dans le forum OpenGL
    Réponses: 8
    Dernier message: 07/10/2004, 12h30
  5. afficher une fenetre_B sur une autre fenetre_A
    Par dibak dans le forum C++Builder
    Réponses: 14
    Dernier message: 10/10/2003, 23h50

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