Texture DeviL (openGL+glut)

Fermé
betsprite - 28 avril 2010 à 16:46
 betsprite - 29 avril 2010 à 09:11
Bonjour tout le monde,

J'essai depuis quelques jours d'appliquer une texture à un cube en opengL.
Pour se faire, on m'a dit qu'il y avait deux possibilités :

- faire sa propre fonction pour charger un fichier.
- utiliser une bibliothèque comme deviL.

J'ai donc téléchargé un fichier zip sur le site qui contient :

dans le repertoire "lib" les fichiers suivant :

- DevIL.dll
- DevIL.lib
- ILU.dll
- ILU.lib
- ILUT.dll
- ILUT.lib

(Il y a aussi un sous-repertoire "unicode" avec les mêmes fichiers donc je sais pas lesquels sont utiles :s).

Aussi, il y a un autre repertoire "include/IL" avec :

- config.h
- config.h.win
- devil_internal_ex...
- il.h
- il_wrap.h
- ilu.h
- ilu_region.h
- ilut.h
- ilut_config.h

*** Seulement, j'ai du mal à comprendre l'utilité de ces fichiers et comment les utiliser pour pouvoir intégrer complétement la librairie deviL à un projet openGL.

-------------------------------------------------------------------------------------------------------------------

Aussi, une fois ceci fait, j'ai le code suivant :

GLuint Texture; 

ilInit(); 
ilutEnable(ILUT_OPENGL_CONV);  
    
ilutRenderer(ILUT_OPENGL); 
Texture = ilutGLLoadImage("superimageavecunecape.jpg");    


Puis enfin pour l'application sur le cube :

glPushMatrix(); 
  glEnable(GL_TEXTURE_2D); 
  glBindTexture(GL_TEXTURE_2D, Texture); 
  
  glBegin(GL_QUADS); 
    glTexCoord2i(1,0);glVertex3f(-1,-1,1); 
    glTexCoord2i(0,0);glVertex3f(1,-1,1); 
    glTexCoord2i(0,1);glVertex3f(1,1,1); 
    glTexCoord2i(1,1);glVertex3f(-1,1,1); 

    glColor3f(0,1,0); glVertex3f(1,1,-1); 
    glColor3f(0,0,1); glVertex3f(-1,1,-1); 
    glColor3f(1,0,0); glVertex3f(-1,1,1); 
    glColor3f(1,0,0); glVertex3f(1,1,1); 
    
    glColor3f(0,0,1); glVertex3f(-1,-1,-1); 
    glColor3f(0,1,0); glVertex3f(1,-1,-1); 
    glColor3f(1,0,0); glVertex3f(1,1,-1); 
    glColor3f(1,0,0); glVertex3f(-1,1,-1); 
    
    glColor3f(0,1,0); glVertex3f(1,-1,-1); 
    glColor3f(0,0,1); glVertex3f(1,-1,1); 
    glColor3f(1,0,0); glVertex3f(1,1,1); 
    glColor3f(1,0,0); glVertex3f(1,1,-1); 
        
    glColor3f(0,0,1); glVertex3f(-1,-1,-1); 
    glColor3f(0,1,0); glVertex3f(-1,-1,1); 
    glColor3f(1,0,0); glVertex3f(-1,1,1); 
    glColor3f(1,0,0); glVertex3f(-1,1,-1); 
    
    glColor3f(0,1,0); glVertex3f(1,-1,-1); 
    glColor3f(0,0,1); glVertex3f(-1,-1,-1); 
    glColor3f(0,1,0); glVertex3f(-1,-1,1); 
    glColor3f(0,0,1); glVertex3f(1,-1,1); 
  glEnd(); 
  
  glEnable(GL_BLEND); 
  glPopMatrix(); 



Ici, j'ai du mal à comprendre comment la fonction ilutGLLoadImage va chercher l'image jpg sans chemin absolu (pour la retrouver sur ton ordi) ?

Enfin, pourquoi cette fonction est-elle si simple et des personnes s'embêtent à écrire :

ILboolean success;
	ILuint iltexID;
 
	ilGenImages(1, &iltexID);
	ilBindImage(iltexID);
	success = ilLoadImage(fich); 
 
	if (success)
  	{
		glGenTextures(1,&texId);
 
		width = ilGetInteger(IL_IMAGE_WIDTH);
		height = ilGetInteger(IL_IMAGE_HEIGHT);
		internalFormat = ilGetInteger(IL_IMAGE_BPP);
		format = ilGetInteger(IL_IMAGE_FORMAT);
		type = ilGetInteger(IL_IMAGE_TYPE);
 
    	        glBindTexture(GL_TEXTURE_2D, texId);
 
		gluBuild2DMipmaps(GL_TEXTURE_2D, internalFormat, width,             height, format, type, ilGetData());
 
		glBindTexture(GL_TEXTURE_2D, 0);
		
 }
  else
  {
		perror("Erreur de chargement avec devIL : ");
		exit(45);
  }
	
  	ilDeleteImages(1, &iltexID);
	
	printf("Texture chargée\n");



Je sais ce message est long :s j'éspère qu'il ne vous effrayera pas trop ...
J'attends vos réponses avec impatience !

Merci d'avance :)

1 réponse

N'ayant toujours pas trouvé de réponses, je me permets de up ce poste.

Si jamais vous avez un peu de temps à consacrer à mon problème je vous en serez très reconnaissant.

Merci encore !
0