Archived

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

Creating a OpenGL texture from a resorce file

This topic is 6382 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

Hey, GL Wizards! I need help with creating a OpenGL texture from a bitmap loaded from resoure file.
                                                    

void CreateResTextures()
{
    // bits needed to create a 256x256 24 bits bitmap

    const int iNrBits = 256*256*3;


    // Load bitmap from resource file

    HBITMAP bitmap = LoadBitmap(GetModuleHandle(NULL), 
        MAKEINTRESOURCE(IDB_BITMAP));


    // Allocate bitmap data

    unsigned char *data = new unsigned char[iNrBits];


    // Get bitmap data from handle

    GetBitmapBits(bitmap, iNrBits, data);


    // Create one texture

    glGenTextures(1, &m_texture[0]);


    // Bind name to texture

    glBindTexture(GL_TEXTURE_2D, m_texture[0]);

	
    // Generate the texture

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 
		0, GL_RGB, GL_UNSIGNED_BYTE, data);


   delete data;
}

                                
The pixels in the image is not on correct positions. But I think that all the colors is correct. Only half texture shows up. Somebody of you must have loaded a bitmap from a resource file and used it as a texture Gandalf the White
Edited by - Gandalf on 6/20/00 7:30:12 AM

Share this post


Link to post
Share on other sites
I''m sorry not to be able to answer you question, but how do you do this cool IDE-like code formatting ? Do you use any special proggie or type everything by hand ? It is so... clear !

EL

Share this post


Link to post
Share on other sites
I''m using 24bits uncompressed 256x256 TGA images.
Maybe a bit big...but compression is a thing of the last minute.
And it''s very easy to use, no loss of data...

Anyway here''s the source:
    
PIXEL Texture[256*256];
typedef struct
{ char CompressionHeader[12];
WORD Width;
WORD Height;
WORD BitsPerPixel;
unsigned char Data[1];
}
TGAHEADER, *PTGAHEADER;

void *pResTexture = LockResource(LoadResource(NULL, FindResource(NULL, MAKEINTRESOURCE(IDT_TEXTURE), "TGA")));
unsigned char *pTexture = ((PTGAHEADER)pResTexture)->Data;
for(int j=0; j<256; j++)
for(int i=0; i<256; i++)
{ Texture[(255-j)*256 + i].b = *pTexture++;
Texture[(255-j)*256 + i].g = *pTexture++;
Texture[(255-j)*256 + i].r = *pTexture++;
}
glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, Texture);


Share this post


Link to post
Share on other sites
Thank you very much!

But I have 2 questions for you:

1. PIXEL? What lib and header is needed to find this structure?
2. Can Paintshop save TGA files?

Gandalf the White

Share this post


Link to post
Share on other sites