【发布时间】:2014-01-18 21:14:32
【问题描述】:
我在 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);
【问题讨论】:
标签: c++ opengl bitmap alpha-transparency