加载和使用 Alpha 通道位图
Posted
技术标签:
【中文标题】加载和使用 Alpha 通道位图【英文标题】:Load and use alpha channel bitmap 【发布时间】:2019-06-05 14:08:18 【问题描述】:考虑以下 alpha 通道位图:
const int width = 4, height = 4;
var alpha = new byte[width * height]
255, 255, 255, 255,
0, 127, 127, 0,
0, 127, 127, 0,
255, 255, 255, 255
;
我想将它加载到 OpenGL 中,并将其用作片段着色器:
out vec4 color;
void main()
float alpha = // Get pixel alpha like texture()
color = vec4(1, 0, 0, alpha);
我知道可以使用 RGBA 位图纹理,但是否可以只使用 Alpha 通道位图纹理? (来自最简单的byte[]
类型)
【问题讨论】:
【参考方案1】:您不需要使用 Alpha 通道位图,您可以使用 1 通道位图纹理,如下所示:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, byteBuffer);
这里GL_RED
是说我们只想要一个具有一个通道的纹理(红色)
所以在片段着色器中你可以做
float alpha = texture(...).r;
【讨论】:
非常感谢!我正在尝试 别担心!如果您需要进一步解释,请告诉我。 @Rabbid76 是的,我已纠正,我对答案进行了必要的更改。谢谢!以上是关于加载和使用 Alpha 通道位图的主要内容,如果未能解决你的问题,请参考以下文章