加载并使用Alpha通道位图

时间:2019-06-05 14:08:18

标签: opengl

考虑以下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 个答案:

答案 0 :(得分:3)

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

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

GL_RED中,我们的意思是我们只想要一个通道(红色)的纹理 因此,在片段着色器中,您可以执行 float alpha = texture(...).r;