Archived

This topic is now archived and is closed to further replies.

gluScaleImage, HELP?!?!

This topic is 6472 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites