我在OpenGL中编写了一个简单的24位位图加载程序。我打开一个位图文件并读取其像素,然后从中创建一个RGB像素数据数组,然后将其传递给glDrawPixels()。
问题:我需要使图像的某些像素透明,但我不确定Alpha通道是如何工作的。如果我想添加透明度,我不确定要为glDrawPixels中的format
和type
传递什么类型的参数?我试图创建一个带有alpha通道的位图文件,但在查看文件内容后,第4个字节(alpha)始终为零,图像本身也不透明。
这是我的RGB文件结构:
struct bmpRGB{
unsigned char R, G, B;
};
我需要添加什么才能包含Alpha?在使用RGBA时,我应该向函数传递什么type
参数?我将在填充像素阵列时自己添加alpha通道,但我需要知道为此所需的数据结构。
这就是我现在所做的:
glDrawPixels(bmp->Width, bmp->Height, GL_RGB,GL_UNSIGNED_BYTE, bmp->Data);
处理alpha组件并将format
设置为GL_RGBA
:
struct bmpRGB
{
unsigned char R, G, B, A;
};
glDrawPixels(bmp->Width, bmp->Height, GL_RGBA, GL_UNSIGNED_BYTE, bmp->Data);
确保启用并配置混合。