OpenGL Alpha频道详情?

时间:2014-01-01 05:12:25

标签: c++ opengl bitmap alpha-transparency

我在OpenGL中编写了一个简单的24位位图加载器。我打开一个位图文件并读取它的像素,然后从中创建一个RGB像素数据数组,然后我将传递给glDrawPixels()。

问题: 我需要让我的图像的某些像素透明,但我不确定Alpha通道是如何工作的。如果我想添加透明度,我不确定在glDrawPixels中为formattype传递什么类型的参数?我尝试使用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);

1 个答案:

答案 0 :(得分:0)

粘贴alpha组件并将format设置为GL_RGBA

struct bmpRGB
{
    unsigned char R, G, B, A;
};

glDrawPixels(bmp->Width, bmp->Height, GL_RGBA, GL_UNSIGNED_BYTE, bmp->Data);

确保启用并配置混合。