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 :

Création de textures jogl


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Par défaut Création de textures jogl
    Salut
    j'essaie de créer une texture procédurale en jogl. J'ai trouvé un exemple en C qui a l'air bien. voilà 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
    unsigned char image[256][256][3];
    int i,j,a;
    for(i=0;i<256;i++) {
    for(j=0;j<256;j++) {
    a=fonctionTexture(x,y);
    image[i][j][0] = a;
    image[i][j][0] = 128;
    image[i][j][0] = 128;
    }
    }
     
    glBindTexture...
    glTexParameter...
     
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,image);

    C'est au glTexImage2D que je bloque quand je fais tout ça en jogl. En effet, la méthode glTexImage2D de l'api jogl ne prend pas de char[][][] mais un objet Buffer. Quelqu'un sait-il comment on doit faire la conversion ?? merci

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Salut

    Citation Envoyé par jafar456 Voir le message
    Quelqu'un sait-il comment on doit faire la conversion ??
    As-tu testé en écrivant directement dans un buffer, plutôt que de chercher à convertir? Taille 256*256*3, et tu écris à la suite les trois composantes pour chaque pixel de ton image.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Par défaut
    J'ai essayé avec comme ça :
    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
     
    IntBuffer image = BufferUtil.newIntBuffer(256*256*3);
    int i,j,a;
    for(i=0;i<256;i++) {
    for(j=0;j<256;j++) {
    a=fonctionTexture(x,y);
    image.put(a);
    image.put(128);
    image.put(128);
    }
    }
     
    glBindTexture...
    glTexParameter...
     
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,image);
    et là ça ne va pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Required 262144 remaining bytes in buffer, only had 0
    Après je le fait compiler en définissant la taille à 256*256*4 mais c'est du bricolage et de toute façon rien de s'affiche. Je ne sais pas comment fonctionne un objet Buffer et sa méthode put(int i). C'est sans doute pas comme ça qu'on fait

  4. #4
    Membre éclairé Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Par défaut
    Cher Jafar :-p as-tu essayé ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int[] raw = new int[256*256];
    int i,j,a;
    for(i=0;i<256;i++)
       for(j=0;j<256;j++)
          raw[i*256+j]=(fonctionTexture(i,j)<<16)|0x8080;
     
    glBindTexture...
    glTexParameter...
     
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,IntBuffer.wrap());
    Je ne suis pas sur du (fonctionTexture(i,j)<<16)|0x8080, il faut tester... ;-)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Par défaut
    sarox! merci bien cher_ Belegkarnil
    attention l'ordre des couleurs en java n'est apparemment pas le même qu'en C. J les passe en RGB et le rendu est en BGR

  6. #6
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    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 580
    Par défaut
    penses au bouton
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par jafar456 Voir le message
    J les passe en RGB et le rendu est en BGR
    ça vient plutôt de la manière de remplir le buffer... inverse les composantes bleue et rouge quand tu définis les éléments de ton tableau, et ça va coller
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. création de textures
    Par jo the boss dans le forum OpenGL
    Réponses: 14
    Dernier message: 04/03/2009, 23h40
  2. Création de texture
    Par toukito dans le forum DirectX
    Réponses: 13
    Dernier message: 16/01/2008, 16h15
  3. [DIRECTX] Problème création de texture dynamique
    Par caparenlive59 dans le forum DirectX
    Réponses: 2
    Dernier message: 04/06/2007, 12h54
  4. Création de texture
    Par MrDuChnok dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 13/07/2006, 14h14
  5. Réponses: 22
    Dernier message: 03/08/2005, 00h28

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