加载并使用 Alpha 通道位图



考虑以下 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[]类型(

您不需要使用 alpha 通道位图,您可以使用 1 通道位图纹理,如下所示:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, byteBuffer);

在这里,我们说的是GL_RED我们只想要一个通道的纹理(红色(所以在片段着色器中你可以做 float alpha = texture(...).r;

最新更新