Redimensionner un tableau

Résolu
gilimcce Messages postés 33 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 27 septembre 2004 - 2 sept. 2004 à 16:35
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 3 sept. 2004 à 14:22
Je dois plaquer une texture sur un corps quelconque, sous OpenGL.
Je dispose d'une image jpeg de 1440*720 ou tout format quelconque.
OpenGL nécessite une texture dont les dimensions sont des puissance de 2.
Comment passer du tableau 3D [720][1440][3] à [512][1024][3] par exemple ?

Un petit indice...
Sous IDL il s'agit de la fonction "CONGRID".
Personnellement, ça ne m'a pas vraiment aidé, mais...

Merci pour tout.

5 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 sept. 2004 à 16:53
t'embete pas, passe le tableau à glBuild2DMipmaps qui redimensionne automatiquement
3
gilimcce Messages postés 33 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 27 septembre 2004
2 sept. 2004 à 18:05
//////////////////////// Notes \\\\\\\\\\\\\\\\\\\\\\\

Le corps est effectivement mappé, mais de manière imparfaite :
L'image semble déformée, striée...
je te livre partie du code, au cas où tu puisses y voir qq chose.
merci sans fin.

//////////////////////// Main \\\\\\\\\\\\\\\\\\\\\\\\\\

[...]
loadJpegImage(file);
[...]
/* Parametrage du placage de textures */
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
gluBuild2DMipmaps(GL_TEXTURE_2D,3,1024,512,GL_RGB,GL_UNSIGNED_BYTE,texture);

//glTexImage2D est en commentaire puisque géré par gluBuild2DMipmaps
//glTexImage2D(GL_TEXTURE_2D,0,3,512,1024,0,GL_RGB,GL_UNSIGNED_BYTE,texture);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);

////////////// loadJpegImage \\\\\\\\\\\\\\\\\\\\\

[...]
jpeg_start_decompress(&cinfo);
ligne=image;
while (cinfo.output_scanline<cinfo.output_height)
{
ligne=image+3*1440*cinfo.output_scanline;
jpeg_read_scanlines(&cinfo,&ligne,1);
}

jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);

// rearangement de l'image scannee dans le tableau de texture 3D

for (i=0;i<720;i++)
for (j=0;j<1440;j++)
{
texture[i][j][0]=image[i*1440*3+j*3];
texture[i][j][1]=image[i*1440*3+j*3+1];
texture[i][j][2]=image[i*1440*3+j*3+2];
}
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 sept. 2004 à 21:53
pourquoi tu mets pas

gluBuild2DMipmaps(GL_TEXTURE_2D,3,1440,720,GL_RGB,GL_UNSIGNED_BYTE,texture);

?

tu voudraisqu'il soit redimensionner de quel maniere ton tableau ? (parce que gluBuild2DMipmaps fait ce qu'il a a faire)
0
gilimcce Messages postés 33 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 27 septembre 2004
3 sept. 2004 à 12:08
Alors en effet, ça marche, mais pas pour toute mes images :

Le mappage n'est plus déformé, mais :

phobos n'est mappé qu'au tiers (le reste est noir)
deimos est tout noir
Vénus est mappé totalement, et c'est joli.

Pourtant je suis tjrs dans le cas d'une image 1440*720
et la seule différence avec le code ci-dessus est la modif que tu m'as donnée.

Verrais-tu qq chose ?

Merci encore,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
3 sept. 2004 à 14:22
ben non desolé, je voit pas comment le comportement peut etre diffrenet d'une image à l'autre et de meme dimension

tu es sur du chargement de l'image en jpeg ?
0
Rejoignez-nous