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 :

Problème format GL_RGBA2


Sujet :

OpenGL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut Problème format GL_RGBA2
    Bonjour,

    Dans l'optique d'un jeux plutôt rétro je voulais afficher des sprites via une texture format RGBA2 soit 2 bits par channel. Problème : ça plante, avec très peu d'information.
    voilà le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    GLuint loadTexture(int interpolation, GLbyte *data, int width, int height){
    ...
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA2, width, height, 0, GL_RGBA, GL_UNSIGNED, (void*)data);
    ...


    J'ai essayé un autre mode avec une texture 16 bits et cela fonctionne mais avec des décalage de couleurs. Le format GL_UNSIGNED_SHORT_4_4_4_4 ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA4, width, height, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, (void*)data);
    J'ai beau cherché sur le net, impossible de trouver des exemple d'utilisation du format GL_RGBA2.

    Quelqu'un aurait une idée du problème ?

    Je précise que je débute en C/C++ du coup mon code est peut être pas très clean.

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Salut!

    Un bon point de départ est d'activer les extensions de débogage (KHR_debug, ARB_debug_output ou AMDX_debug_output, en fonction de ce qui est disponible sur ta machine), ça te permettra d'avoir plus d'informations.
    Ensuite, tu dis que ça plante, mais ça plante à quel endroit ?

    Ces textures, c'est toi qui les remplis ? Ce sont des render targets ? Quelle est leur utilisation ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut
    Merci,

    Le plantage c'est me donne pas beaucoup d'information, et pas très parlant pour moi

    #0 0x100a26da ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #1 0x101ddae5 ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #2 0x101dde60 ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #3 0x101ddfff ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #4 0x101dcb0a ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #5 0x1005b47f ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #6 0x1005c866 ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #7 0x1004aef8 ig75icd32!RegisterProcTableCallback() (C:\Windows\SysWOW64\ig75icd32.dll?)
    #8 0x4015a1 loadTexture(interpolation=9728, data=0x6780020 "", width=768, height=384) (C:\Users\jwarin\codeblock\monprogramme\TestGLFW\main.cpp:64)
    #9 0x401902 init() (C:\Users\jwarin\codeblock\monprogramme\TestGLFW\main.cpp:225)
    #10 0x401c58 initWindow() (C:\Users\jwarin\codeblock\monprogramme\TestGLFW\main.cpp:310)
    #11 0x401d0b main() (C:\Users\jwarin\codeblock\monprogramme\TestGLFW\main.cpp:340)
    En fait le tableau de bytes(data) contient les données RGBA , du très classique en fait. Je converti des sprites fait en 32 bits vers du 16bits(4R,4G,4B,4A) ou 8bits(2R,2G,2B,2A)

    Si je change le code
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA2, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (void*)data);
    par

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA2, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE_2_3_3, (void*)data);
    Cela ne plante plus mais ça ne fonctionne pas.
    J'ai l'impression que dans le 1er cas, ce qui est attendue est 1 bit par cannal, car en divisant largeur et hauteur par 2, je n'ai plus de problème, ayant du coup 4 bytes par pixel.
    Je ne trouve pas GL_UNSIGNED_BYTE_2_3_2_2 qui aurait pu être une solution.

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Et en activant les extensions de débogage, t'as pas une info, avant que ça plante ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par jwar0 Voir le message
    J'ai l'impression que dans le 1er cas, ce qui est attendue est 1 byte par cannal, car en divisant largeur et hauteur par 2, je n'ai plus de problème, ayant du coup 4 bytes par pixel.
    Je ne trouve pas GL_UNSIGNED_BYTE_2_3_2_2 qui aurait pu être une solution.
    Je corrige, ce que j'ai dis précédement, ce n'était pas 1 bit mais 1 byte

    Citation Envoyé par dragonjoker59 Voir le message
    Et en activant les extensions de débogage, t'as pas une info, avant que ça plante ?
    Je vais tester ça.

Discussions similaires

  1. Prolèmes de format de date pour attaquer une base access
    Par Aboubacry dans le forum Accès aux données
    Réponses: 2
    Dernier message: 29/05/2007, 09h55
  2. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34
  3. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    Réponses: 4
    Dernier message: 12/06/2002, 11h57
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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