Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1501 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  ImageMagick et les textures openGL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ImageMagick et les textures openGL

n°326225
umag
deux yeux sinon rien
Posté le 07-03-2003 à 17:37:10  profilanswer
 

Bonjour !
 
J'essaye d'ouvrir un fichier image avec Magick++ pour pouvoir l'utiliser comme texture pour un modèle 3D.
Je pensais que ce serais tout simple, mais visiblement une subtilité m'échappe.
Au départ, mon code ressemblait à ça :

Code :
  1. // [...]
  2.     Image im;
  3.     bool status = true;
  4.     // lecture de l'image
  5.     try {
  6. im.read(filename);
  7.     }
  8.     catch(exception &e) {
  9. cerr << e.what() << endl;;
  10. status = false;
  11.     }
  12.    
  13.     if (status) {
  14. // blabla de création de texture
  15.         glGenTextures(1, &texPntr[0]);
  16.         glBindTexture(GL_TEXTURE_2D, texPntr[0]);
  17. // utilisation du fichier chargé
  18. glTexImage2D(GL_TEXTURE_2D, 0, 3, im.columns(),  im.rows(), 0, GL_RGBA, GL_UNSIGNED_SHORT, im.getPixels(0,0,im.columns(), im.rows()));
  19. // et encore du blabla
  20.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  21.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  22.     }
  23.     // [...]

 
 
Après j'ai utilisé des ruses de sioux genre

Code :
  1. im.magick("RGBA" );


 
Mais rien n'y fait, mon modèle a toujours une sale tête.
 
Quelqu'un aurait une idée sur la façon de s'y prendre ?
 
Merci

mood
Publicité
Posté le 07-03-2003 à 17:37:10  profilanswer
 

n°328081
umag
deux yeux sinon rien
Posté le 10-03-2003 à 09:50:43  profilanswer
 

Bon, j'ai résolu mon problème : ImageMagick inverse les couleurs, donc il faut ruser avec les options.
 

Code :
  1. image.read(nom_de_fichier);  // lecture sur le dd
  2. image.flip();                // inversion de l'image

 
 
Puis, pour la texture en elle-même, l'option de format est GL_BGRA et non GL_RGBA (composante bleue en premier).

Code :
  1. glTexImage2D(GL_TEXTURE_2D, 0, 3, image.columns(), image.rows(), 0,
  2.       GL_BGRA, GL_UNSIGNED_SHORT,
  3.       image.getPixels(0, 0, im.columns(), im.rows()));
  4. // im.columns() : largeur de l'image
  5. // im.rows()    : hauteur de l'image
  6. // im.getPixels(...) : mets les valeurs des pixels dans le cache et renvoi un pointeur dessus.


 
Maintenant, ça a l'air de fonctionner correctement...  
:)  
 
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  ImageMagick et les textures openGL

 

Sujets relatifs
OpenGL est mort, vive OpenGLOpenGL : GROS problème
Mon premier jeu en OpenGL : donnez moi votre avisfichiers necessaire pour executer de l'OpenGL?
3DSMax : OpenGL ou DirectX[OpenGL-VTK]Visualisation de maillages surfaciques 2D/3D
Exemple OpenGL MSDN, boucle des msgprog opengl
[C++/OpenGl] comment avoir un timing pr un chronomètre[C++]Cherche tutorial MFC + OpenGL
Plus de sujets relatifs à : ImageMagick et les textures openGL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR