Sign in to follow this  

Function for loading Resources isn't going too well...

Recommended Posts

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.
#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[i]   == 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.
                pImage_RGBA[j+3] = 255; // If not, set alpha to fully opaque.

            pImage_RGBA[j]   = pImage_RGB->data[i];
            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]);

        // 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;


Can someone tell me what I am doing wrong and what can help me fix it? Thanks~ Axesor

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this