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 :)
Afficher la suite