Réponse acceptée !
il me semble qu'une texture sous opengl doit avoir des dimensions puissance de 2 : 2,4,8,16,32,64,128,256,512....
donc si tu souhaite afficher une image ayant des dimensions qui ne
correspondent pas a cette regle, il faut la stocker dans une texture
ayant les dimensions supérieures a l'image à texturer qui suivent la
regle.
donc pour un jpg en 1024*768, tu la stock en texture 1024*1024. la
partie de la texture qui est en trop est donc remplie de noir.
ensuite, il faut jouer sur la fonction glTexCoord2f(GLfloat u,Glfloat v) où u est entre 0 et 1 et le changement se fait sur v :
v est compris entre 0 et 0.75 (768/1024) ça te permet donc de tronquer la partie inutile de la texture.
dans le code source que tu utilise, ca implique quelques modifs de code :
la fonction loadJpegImage() doit etre retravaillée afin de charger des textures en puissance de 2 au lieu de 256*256 uniquement.
les tableaux doivent etre dimenssionnés en conséquence.
la fonction glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,texture);
doit etre modif aussi....
je ne suis pas certain que ca marchera comme tu l'entends...
mais avec ce code source, c'est tout ce que je peux faire pour t'aider vu mon niveau.
@++
|