Sign in to follow this  
Axesor

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

Recommended Posts

Axesor    100
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.
            }
            else
            {
                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]);
    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;

}



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