gpt4 book ai didi

c++ - 如何使用 C++/OpenGL 加载透明背景的图标并正确显示?

转载 作者:行者123 更新时间:2023-11-28 08:08:25 25 4
gpt4 key购买 nike

我目前正在尝试加载一个具有透明背景的图标。

然后我从中创建一个位图并尝试通过 glTexImage2D() 显示这些位。

但是图标的背景永远不会变透明:(

这是我的一些代码:

DWORD dwBmpSize = 32*32*4;
byte* bmBits = new byte[dwBmpSize];

for(unsigned int i = 0; i <dwBmpSize; i+=4)
{
bmBits[i] = 255; // R
bmBits[i+1] = 0; // G
bmBits[i+2] = 0; // B
bmBits[i+3] = 255;// A
// I always get a red square, no matter what value i fill into alpha
}

//create texture from bitmap
glTexImage2D(target, 0,
GL_RGBA, 32, 32,
0, GL_RGBA, GL_UNSIGNED_BYTE, bmBits);

delete bmBits;

编辑:我更改了代码,以确保我的位具有 alpha channel 。现在我用自定义值填充一个 32x32 像素的区域来查看发生了什么,而不是加载图标。还是不行!

我错过了什么?还是根本不可能?

最佳答案

您必须启用混合并设置正确的混合模式。

glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

此外,如果您用 255 填充整个 alpha channel ,它仍然是不透明的。尝试使用 128 或其他值。

关于c++ - 如何使用 C++/OpenGL 加载透明背景的图标并正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com