#include "Img.h"
void BmpImg::RESLoadImg(char *array, int width, int height, int num)
{
int g_keyColor[3] = {255, 0 , 255};
AUX_RGBImageRec *pImage_RGB = auxDIBImageLoad(MAKEINTRESOURCE(array));
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
unsigned char *pImage_RGBA = NULL;
int imageSize_RGB = width * height * 3;
int imageSize_RGBA = width * height * 4;
// allocate buffer for a RGBA image
pImage_RGBA = new unsigned char[imageSize_RGBA];
//
// Loop through the original RGB image buffer and copy it over to the
// new RGBA image buffer setting each pixel that matches the key color
// transparent.
//
int i, j;
for( i = 0, j = 0; i < imageSize_RGB; i += 3, j += 4 )
{
// Does the current pixel match the selected color key?
if( pImage_RGB->data == g_keyColor[0] &&
pImage_RGB->data[i+1] == g_keyColor[1] &&
pImage_RGB->data[i+2] == g_keyColor[2] )
{
pImage_RGBA[j+3] = 0; // If so, set alpha to fully transparent.
}
else
{
pImage_RGBA[j+3] = 255; // If not, set alpha to fully opaque.
}
pImage_RGBA[j] = pImage_RGB->data;
pImage_RGBA[j+1] = pImage_RGB->data[i+1];
pImage_RGBA[j+2] = pImage_RGB->data[i+2];
}
glGenTextures( 1, &g_bmp[num]);
glBindTexture( GL_TEXTURE_2D,g_bmp[num]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// Don't forget to use GL_RGBA for our new image data... we support Alpha transparency now!
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, pImage_RGBA );
if( pImage_RGB )
{
if( pImage_RGB->data )
free( pImage_RGB->data );
free( pImage_RGB );
}
if( pImage_RGBA )
delete [] pImage_RGBA;
}
Function for loading Resources isn't going too well...
I need this function to load a bitmap from a resource, there are no errors what-so-ever, yet, when I run my program, it says it has detected a problem. So I tied removing the MAKEINTRESOURCE and just put array, then the program worked fine.
Can someone tell me what I am doing wrong and what can help me fix it?
Thanks~
Axesor
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement