考虑以下 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;