Когда вы создаете текстуру для OpenGL, вы захотите создать текстуру в виде 32-битной RGBA-текстуры. Создайте буфер для хранения содержимого этой новой 32-битной текстуры и выполните итерацию по вашему 24-битному растровому изображению. Каждый раз, когда вы сталкиваетесь с цветом фона, устанавливайте альфа на ноль в вашем новом 32-битном растровом изображении.
struct Color32;
struct Color24;
void Load24BitTexture(Color24* ipTex24, int width, int height)
{
Color32* lpTex32 = new Color32[width*height];
for(x = 0; x < width; x++)
{
for(y = 0; y < height; y++)
{
int index = y*width+x;
lpTex32[index].r = ipTex24[index].r;
lpTex32[index].g = ipTex24[index].g;
lpTex32[index].b = ipTex24[index].b;
if( ipTex24[index] == BackgroundColor)
lpTex32[index].a = 0;
else
lpTex32[index].a = 255;
}
}
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, lpTex32);
delete [] lpTex32;
}