J'ai commencé il y a peu la programmation openGL avec GLUT et je coince actuellement au niveau de l'application des textures. Bon nombre de formats n'étant pas pris en compte par openGL je me suis tourné vers GFL SDK pour charger de facon complète et facile mes images.
Voila mon problème, la compilation fonctionne mais dès qu'elle se fini j'ai une erreure :
Exception non gérée à 0x0041459b dans texture.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000028.
Avec comme option continuer ou arrêter...
J'utilise le microsoft visual C++ 2005 comme compilateur et la GFL 2.80
Le code vient de chez vous c'est le GFLtexbind.zip que j'ai pu télécharger à partir de cette page.
Chez moi il ne se compile pas et me sort un tas d'erreur en tout genre du coup j'ai repris le code et j'ai pris uniquement les parties qui m' interessent c'est à dire au niveau du chargement des images. Le code compile mais j'ai une erreure au niveau du pointeur de :
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image1->Width, image1->Height, GL_RGB, GL_UNSIGNED_BYTE, image1->Data);
Avec la source du mal en gras !
Voila le code(enfin tout ce qui concèrne mon problème) :
Code: Select all
#include <stdio> //votre site ne veux pas que je mette les .h tssss
#include <GFL> //ni libgfl
#include <GFL> //ni libgfle
#include <gl> //ni glut
//Variables pour les textures
char texFileName1[] = "img/tex1.jpg"; //Vous pouvez y aller : jpg, png, ppm, tga, ...
GLuint texName[1];
GFL_BITMAP *image1; //on a bien le pointeur sur l'image...
void init (void)
{
//Début: Chargement des fichiers image avec GFL, j'ai supprimé toute la partie d'affichage avec "cout" qui ne m'étais pas utile.
gflLibraryInit();
GFL_FILE_INFORMATION info1;
GFL_LOAD_PARAMS load_option;
gflGetDefaultLoadParams( &load_option );
gflLibraryExit();
//Fin: Chargement des fichiers image avec GFL
Ici toute l'initation au niveau matriciel, pas de difficultées : glMatrixMode... etc...
glGenTextures(1, texName);
//Chargement de image1 dans la mémoire de texture sous le nom texName[0]
glBindTexture(GL_TEXTURE_2D, texName[0]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image1->Width, image1->Height, GL_RGB, GL_UNSIGNED_BYTE, [b]image1->Data[/b]);
//On peut libérer l'espace mémoire image1
gflFreeBitmap( image1 );
//Paramétrage de la texture n 1
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
etc... etc...
J'ai bien link :
glu32.lib
opengl32.lib
glut32.lib
libgfl.lib
libgfle.lib
Et je pense que ca peut venir de la GFL ..., en tout cas c'est un problème de pointeur sur data et je ne sais pas comment régler ca.
Merci !