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 :

Texture 2D


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Directeur R&D
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur R&D

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Par défaut Texture 2D
    Salut a tous,

    je comprend pas pourquoi mon code ne marche pas. l'ereur est la suivante :

    Erreur 2 error C2664: 'auxDIBImageLoadW' : impossible de convertir le paramètre 1 de 'const char [7]' en 'LPCWSTR'

    void
    COpenGLView::LoadMyTexture()
    {
    //GLuint texture[1]; //Storage For One Texture
    AUX_RGBImageRec *TextureImage[1];// create Storage Space For the texture

    FILE *File;
    File=fopen(FILENAME,
    "r");

    //We clear the image record to make sure it's empty.
    memset(TextureImage,0,sizeof(void *)*1);

    //Does the file exist?
    if (File)
    {
    fclose(File);

    // if the Bitmap is correcty Loaded into texture map
    if (TextureImage[0]=auxDIBImageLoad(FILENAME))
    {
    //Create the Texture
    glGenTextures(1, &texture[0]);
    // Typical Texture Generation using date from the bitmap
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    //Generate the texture
    glTexImage2D(GL_TEXTURE_2D, /*2D texture Type*/
    0, /* Mipmap : nothing*/
    3, /*Colors : 3*/
    TextureImage[1]->sizeX, /*width of image*/
    TextureImage[1]->sizeY, /*height of image*/
    0, /*widht edge*/
    GL_RGB, /*RGBA format*/
    GL_UNSIGNED_BYTE, /*colors type*/
    TextureImage[1]->data); /*adress's image*/
    // Linear filtering
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    // Linear filtering
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    }
    }
    if (TextureImage[0])
    {
    if (TextureImage[0]->data)
    {
    free(TextureImage[0]->data);
    }
    free(TextureImage[0]);
    }

    }




    merci.

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Comment FILENAME est il déclaré ?

  3. #3
    Membre averti
    Profil pro
    Directeur R&D
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur R&D

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Par défaut
    Comme ça:
    #define FILENAME "opengl.bmp"

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Ecoute l'ami, je ne suis pas un guru de c++ (je suis sur Delphi et je migre vers C#), mais je pense que ton problème vient de la déclaration de FILENAME.
    Essai de la redeclarer comme char *.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char * FILENAME;
    FILENAME=(char*)malloc(strlen("opengl.bmp")*sizeof(char));
    strcpy(FILENAME, "opengl.bmp");
    Est ce qu'un spécialiste en C++ peut intervenir la ? je repète, je ne connais le c++ que grossièrement.

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    je ne suis pas non plus un gourou du C, mais je suis ENTIEREMENT d'accord avec cette erreur.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Membre averti
    Profil pro
    Directeur R&D
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur R&D

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Par défaut
    Merci de me repondre si rapidement les enfants. mais je viens de faire ce que vous m'avez conseillé et le probleme maintenant est le suivant:

    Erreur 3 error C2664: 'auxDIBImageLoadW' : impossible de convertir le paramètre 1 de 'char *' en 'LPCWSTR'

  7. #7
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    D'aprés ce que je connais, LPCSTR est équivalent à char*. Le problème vient donc du W dans LPCWSTR. Je pense qu'il s'agit là du WideChar qui code un caractère sur 2 octets. La je ne peux plus t'aider, je ne connais pas les fonctions qui opèrent sur le WideChar.
    En tout cas, ton problème n'a pas de lein avec OpenGL. Oriente toi plutôt vers le forum C++. Bonne chance.


  8. #8
    Membre expérimenté Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Par défaut
    salut.
    Comme ca vite fait:
    Pour vérifier si
    LoadMyTexture() fonctionne.
    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File=fopen(FILENAME,"r");

    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File=fopen("opengl.bmp","r");

    si ca ne fonctionne pas le probleme vient de ta fonction.
    si ca fonctionne le probleme vient de la declaration de filename.
    @+


  9. #9
    Membre confirmé Avatar de deeal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 218
    Par défaut
    essaie de faire un cast explicite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (TextureImage[0]=(LPCWR) auxDIBImageLoad(FILENAME))
    

  10. #10
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    if (TextureImage[0]=(LPCWR) auxDIBImageLoad(FILENAME))
    le problème ne vient pas du type du resultat de auxDIBImageLoad, mais du type du paramètre FILENAME. il faut plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (TextureImage[0]=auxDIBImageLoad((LPCWSTR)FILENAME));

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Deux choses :

    - Si tu utilises l'unicode alors il faut une chaîne "longue" : L"opengl.bmp" au lieu de "opengl.bmp".

    - Si tu ne veux pas utiliser l'unicode, alors désactive le

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

Discussions similaires

  1. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13
  2. Chargement d'une texture a partir de la mémoire
    Par logramme dans le forum DirectX
    Réponses: 6
    Dernier message: 27/01/2003, 14h57
  3. appliquer des textures de taille 2n+1
    Par Katsuo chris dans le forum DirectX
    Réponses: 4
    Dernier message: 14/11/2002, 00h11
  4. Mosaïque texturée
    Par Pode dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/09/2002, 09h50
  5. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31

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