[Opengl] gluScaleImage

gluScaleImage [Opengl] - C++ - Programmation

Marsh Posté le 01-09-2006 à 14:12:13    

Bonjour,
 
Je n'arrive pas à utiliser gluScaleImage correctement...mais d'abord j'ai une bête question : est-ce que gluScaleImage va ajouter des pixels noir ou blanc à mon image ou alors il va éllargir mon image et la déformer ?
 
Voici mon code source:

Code :
  1. //glTexture->width and glTexture->height are powers of 2 ?
  2. unsigned int newWidth = 2, newHeight = 2;
  3. while(newWidth < glTexture->width)
  4.  newWidth=newWidth<<1; //Multiply by 2
  5. while(newHeight < glTexture->height)
  6.  newHeight=newHeight<<1; //Multiply by 2
  7. if(newWidth!=glTexture->width || newHeight!=glTexture->height) //Scale image
  8. {
  9.  unsigned char *newTexels = new unsigned char[newWidth*newHeight*glTexture->internalFormat];
  10.  gluScaleImage(format, glTexture->width, glTexture->height, GL_UNSIGNED_BYTE, glTexture->texels, newWidth, newHeight, GL_UNSIGNED_BYTE, newTexels);
  11.  glTexImage2D (GL_TEXTURE_2D, 0, glTexture->internalFormat, glTexture->width, glTexture->height, 0, format, GL_UNSIGNED_BYTE, newTexels);
  12.  //openGL has its own copy of texture data
  13.  delete newTexels;
  14. }else
  15. {
  16.  glTexImage2D (GL_TEXTURE_2D, 0, glTexture->internalFormat, glTexture->width, glTexture->height, 0, format, GL_UNSIGNED_BYTE, glTexture->texels);
  17. }


 
1) D'après mes tests la condition est correctement exécuté quand une des 2 dimentions n'est pas une puissance de 2.
2) Quand j'utilise une image avec des dimention de puissance de 2 : tout fonctionne mais quand l'image n'as pas des dimentions de puissance de 2 : mon application Opengl est super lente (4 à 8 fps au lieu de 130 fps)
 
Merci...

Reply

Marsh Posté le 01-09-2006 à 14:12:13   

Reply

Marsh Posté le 01-09-2006 à 23:48:25    

Oups je vien de remarqué une grosse erreur :
 
Il fallait que je mette ceci dans le if:
glTexImage2D (GL_TEXTURE_2D, 0, glTexture->internalFormat, newWidth, newHeight, 0, format, GL_UNSIGNED_BYTE, newTexels)
au lieu de ceci:
glTexImage2D (GL_TEXTURE_2D, 0, glTexture->internalFormat, glTexture->width, glTexture->height, 0, format, GL_UNSIGNED_BYTE, newTexels)
 
Par contre j'ai toujours une erreur : l'image de départ est tout à fait différente de l'image après avoir fait un gluScaleImage...est-ce que je serait trompé dans un paramètre ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed