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 :

Chargeur de texture bmp


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Chargeur de texture bmp
    Bonjour à tous,

    Voila mon probleme. J'ai mon chargeur de texture bmp. Il arrive à charger certains bmp et pas d'autres...Voila le code

    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
    bool __fastcall TForm1::LoadTexture(char* sFilename, GLuint* pID)
    {
        BMPTexture* BMPTex = OpenGLAPPanel1->LoadBMPTexture(sFilename, false);
     
        if(!BMPTex)
            return false;
     
        glGenTextures(1, pID);
     
        glBindTexture(GL_TEXTURE_2D, *pID);
        glTexImage2D(GL_TEXTURE_2D, 0, 3, BMPTex->GetWidth(),
                            BMPTex->GetHeight(), 0, BMPTex->Format,
                            BMPTex->Type, BMPTex->GetPixels());
     
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
     
        delete BMPTex;
     
        return true;
    }
    Et voila l'image qu'il ne veux pas se charger :



    Pourquoi elle veux pas se charger ?

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Par défaut
    Peut etre le chargeur ne gere pas ce format de bmp?

    Dans glTexImage2D le parametre 3 est ce que c'est GL_RGB??

  3. #3
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    quelle est la valeur de sFilename ?
    utilises-tu un chemin absolu (c:\aaa\bbb\TonProg\Images\Texture.bmp) ou relatif (\Images\Texture.bmp) ?

    Il est très facile de se tromper de chemin relatif, car il dépend d'où s'exécute ton programme. Bref, essaie avec un chemin absolu et si ca marche c'est que ton chemin relatif n'est pas le bon.

  4. #4
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voila c'est que shenron666 m'avais proposé pour charger une image bmp.

    Pour charger j'utilise comme ça la fonction et c'est fonctionne pour mon autre texture.

    Bon ben je vais essayer le chargeur de texture bmp mais ça ma l'air plus complexe à utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LoadTexture("Data/ennemi_1.bmp",&texture[1]);
    Citation Envoyé par shenron666 Voir le message
    le code m'a l'air correct même si c'est un peu...
    qu'est-ce qui ne marche pas ? si tu peux détailler
    comment sais-tu que ta première texture est détruite ?

    sinon je te conseillerait plutot de faire une fonction (ou un objet si tu es en c++) qui charge une et une seule texture de façon indépendante
    ce sera bien plus simple
    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
    bool LoadTexture(char* sFilename, GLint* pID)
    {
        BMPTexture* BMPTex = OpenGLAPPanel1->LoadBMPTexture (sFilename, false);
     
        if(!BMPTex)
            return false;
     
        glGenTextures(1, pID);					
     
        glBindTexture(GL_TEXTURE_2D, *pID);
        glTexImage2D(GL_TEXTURE_2D, 0, 3, BMPTex->GetWidth(),
                            BMPTex->GetHeight(), 0, BMPTex->Format,
                            BMPTex->Type, BMPTex->GetPixels());
     
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
     
        delete BMPTex;
     
        return true;
    sinon ton problème vient peut-etre de la façon dont tu utilises tes textures ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Quelle est la taille de ta texture ?

    multiple de deux ?

    carre / rectangulaire ?

    Ceci sont quelques raisons pour lesquels le chargement peut echoue.

    D'autre part, il existe des questions d'alignement. De memoire, chaque ligne d'un buffer memoire CPU doit etre alignée a une adresse multiple de X

    tu peux modifier l'alignement utilise au moment de glTexImage2D par une fonction opengl ...

    desole je n ai plus son nom , mais cherche les mots cles ALIGNMENT , PACK , STORE dans les headers + net , tu devrait trouver

    genre gl(Tex)Parameteri(GL ...ALIMNENT , 1);



    note : __fastcall , ca ne sert pas a grand chose, surtout pour une fonction de ce genre (appelle 2 , 3 fois a l init puis plus jamais ou presque)

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

Discussions similaires

  1. Loader de textures BMP
    Par pottiez dans le forum Contribuez
    Réponses: 2
    Dernier message: 24/06/2011, 22h34
  2. Impossible de charger une texture BMP en mémoire
    Par trapster dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/07/2010, 07h29
  3. Chargeur de texture : en charger plusieurs `?
    Par Invité dans le forum OpenGL
    Réponses: 7
    Dernier message: 12/07/2008, 16h53
  4. Réponses: 8
    Dernier message: 19/03/2008, 19h08
  5. placage texture bmp
    Par gemai dans le forum OpenGL
    Réponses: 11
    Dernier message: 18/06/2004, 13h40

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