gluScaleImage, HELP?!?!

Started by
0 comments, last by drago 24 years ago
Can anyone explain me how to use the gluScaleImage function? Let me get more specific. gluScaleImage(GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout); The problem is that i want to be able to load an image with wrong dimensions e.g 144x200 and scale it to e.g 256 x 256 , so that the image data can be uploaded into a texture object. What i do is this (in pseudo code): - Copy texture data - Calculate closest valid dimensions (64 x 64, 128 x 128, etc.) - Delete the original texture data - Allocate memory for the original texture data - call gluScaleImage() This doesn't work, I only see one line at the bottom of the quad (that line seems the be correct). After copying the texture data, I check if(pCopiedTextureData[100] == pOriginalTextureData[100]) to see if the copying worked, it does. Then I checked if the calculated valid dimensions were really valid, so I did and they were. So no problem there. So now I checked if(pCopiedTextureData[100] == pOriginalTextureData[100]) after i deleted and allocated new memory for the pOriginalTextureData, AND THEY EQUAL?!?! So I believe that the problem lies there. ---------- Drago Edited by - drago on 4/29/00 7:51:30 AM
osu!
Advertisement
Here is the modified code:

typedef unsigned char byte;typedef unsigned int uint;void CTexture::ScaleTexture(byte *pTexData, uint nTexWidth, uint nTexHeight, uint nTexColorDepth, GLenum format){   // Copy the original texture data   uint nTempTexWidth = nTexWidth;   uint nTempTexHeight = nTexHeight;   uint nTempTexColorDepth = nTexColorDepth;   uint nTempTexMemSpace = nTempTexWidth * nTempTexHeight * (nTempTexColorDepth / 8);   byte *pTempTexData = new byte[nTexMemSpace];   memcpy(pTempTexData, pTexData, nTexMemSpace);   // Set new texture properties for the original texture data   nTexWidth = nTexHeight = 256;   // Delete the original texture data and allocate new memory for the scaled texture   delete [] pTexData;   uint nScaledTexMemSpace = nTexWidth * nTexHeight * (nTexColorDepth / 8);   pTexData = new byte[nScaledTexMemSpace];   // Scale the texture   gluScaleImage(format, nTempTexWidth, nTempTexHeight, GL_UNSIGNED_BYTE, pTempTexData, nTexWidth, nTexHeight, GL_UNSIGNED_BYTE, pTexData);}     

----------
Drago

Edited by - drago on 4/29/00 10:31:54 AM
osu!

This topic is closed to new replies.

Advertisement