c++ opengl charger image texture

c++ opengl charger image texture - C++ - Programmation

Marsh Posté le 22-11-2011 à 20:47:26    

bonjour
je travaille avec opengl avec visual studio 2010
je dessine une scene en 3D
je veux utiliser des images .png ou .jpeg ou .gif comme texture
j'ai pas trouvé comment charger les images
est ce que vous avez une idée
 
 
merci

Reply

Marsh Posté le 22-11-2011 à 20:47:26   

Reply

Marsh Posté le 22-11-2011 à 21:12:33    

Google, GL_TexImage2D() normalement.
Perso je me sers de la SDL avec SDL_Image pour les formats comme png/jpg, sinon tu peux te servir de la sfml.
Nativement avec glut, c'est possible aussi mais j'ai jamais essayé :D


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 22-11-2011 à 21:41:55    

merci pour ton idée
mais moi je veux qlq sans recours a une autre librairie si c'est possible
car je vais rendre le travail au prof et je ne veux pas qu'il soit obligé d'installet qlq pour l'excecuter

Reply

Marsh Posté le 23-11-2011 à 00:14:05    

Ben glut alors, mais tu auras besoin de libpng/libjpeg pour charger des png et des jpeg.


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 23-11-2011 à 17:33:07    

si seulement j'ajoute la librairie au projet et ca marche c'est bien
mais si il faut l'ajouter a visual studio alors la c'est : .......
 
d'ailleurs si tu peux m'envoyer les liens a ces librairies
 
 
merci

Reply

Marsh Posté le 23-11-2011 à 21:20:18    

www.google.com :o


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 24-11-2011 à 02:57:37    

Y'a un smiley pour ça [:alkatraz]  (voire  [:google] )
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 24-11-2011 à 12:04:48    

pour un projet d'école quel besoin de jpg et autre ? tu n'as qu'a convertir tes textures en .ppm avec gimp et tu écris un lecteur en moins de 10 lignes !


---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 25-11-2011 à 15:00:20    

Lightness1024 a écrit :

pour un projet d'école quel besoin de jpg et autre ? tu n'as qu'a convertir tes textures en .ppm avec gimp et tu écris un lecteur en moins de 10 lignes !


 
ou même bitmap :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 01-12-2011 à 22:41:35    

et comment faire ca  
j'ai copié le code de nehe mais j'aitrouvé des erreurs lors du debugage
vous m'indiquez google!!!!
moi je ne poste qu'aprés avoir chercher dans google
 
 
merci en tous ca

Reply

Marsh Posté le 01-12-2011 à 22:41:35   

Reply

Marsh Posté le 02-12-2011 à 00:09:55    

ben t'a raison et tu fais bien.
en attendant voici un peu de suite:
http://netpbm.sourceforge.net/doc/ppm.html
http://fr.wikipedia.org/wiki/Portable_pixmap
sinon un code horrible, ultra trop complet, et carrément trop long pour en charger:
http://www.koders.com/cpp/fidEF0E2 [...] =GetDIBits
par contre il a le mérite d'être fait. marcher j'en sais rien, faut tester.
sinon un autre:
http://www.gamedev.net/topic/45788 [...] file-in-c/
voila voila.


---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 02-12-2011 à 07:10:50    

encours a écrit :

et comment faire ca
j'ai copié le code de nehe mais j'aitrouvé des erreurs lors du debugage
vous m'indiquez google!!!!
moi je ne poste qu'aprés avoir chercher dans google

 


merci en tous ca

 

Ben en réfléchissant :o

 

T'as besoin d'un tableau de rgb pour ta texture OpenGL, et a priori tu codes dans un langage de prog qui fournit de quoi ouvrir un fichier (fopen en C, ifstream en C++, System.IO.FileStream en C#, java.io.FileInputStream en java, open en python... cherche ya forcément)

 

Wikipedia te dit à quoi ressemble un ppm (simple) :
http://fr.wikipedia.org/wiki/Portable_pixmap

 

ou un bmp :
http://en.wikipedia.org/wiki/BMP_file_format
qui est un peu plus compliqué mais tu n'as pas besoin de tout gérer, tu veux juste lire une image 24bits et récupérer width/height et ton tableau de rgb.

 


En C++ par exemple tu pourrais te faire une classe très simple pour lire un fichier (ppm ou bmp donc) et en tirer un tableau de rgb, du genre :

 

Bitmap.h

Code :
  1. #ifndef __THIS_IS_BITMAAAAAAAAAAAP__
  2. #define __THIS_IS_BITMAAAAAAAAAAAP__
  3. #include <string>
  4. class Bitmap {
  5.     public:
  6.         Bitmap(std::string filename);
  7.         ~Bitmap();
  8.         int             getWidth();
  9.         int             getHeight();
  10.         unsigned char*  getBytes();
  11.     private:
  12.         int             width;
  13.         int             height;
  14.         unsigned char*  bytes;
  15. };
  16. #endif
 

Bitmap.cpp

Code :
  1. #include "Bitmap.h"
  2. #include <fstream>
  3. #include <iostream>
  4. Bitmap::Bitmap(std::string filename) {
  5.     // try to open the file
  6.     std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
  7.     if(!ifs) {
  8.         throw "Cannot open file.";
  9.     }
  10.     // là je te laisse bosser, récupère les infos voulues
  11. }
  12. Bitmap::~Bitmap(){
  13.     delete[] this->bytes;
  14. }
  15. int Bitmap::getWidth() {
  16.     return this->width;
  17. }
  18. int Bitmap::getHeight() {
  19.     return this->height;
  20. }
  21. unsigned char* Bitmap::getBytes() {
  22.     return this->bytes;
  23. }
 

Et si tu ne veux pas convertir tes jpg ou png en ppm ou en bmp, alors oui il te faut la libpng ou la libjpeg, parcqu'écrire un lecteur de png ou de jpg prend trop de temps :o


Message édité par Xavier_OM le 02-12-2011 à 07:18:33

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed