将8位alpha纯纹理传递给GLSL

时间:2013-04-21 12:02:11

标签: opengl glsl textures alpha

如何将8位alpha-only纹理传递给GLSL?

1 个答案:

答案 0 :(得分:5)

您没有说明您正在使用的OpenGL版本。但实际上,由于您使用的是GLSL,因此您不应该关心每个像素的8位数据是否在 alpha 组件中。您关心的是您的纹理数据只有一个通道,每像素8位,并且可以通过已知组件访问。

GL 3.x +提供GL_R8 image format。在此之前,您可以使用GL_INTENSITY8(已从核心OpenGL 3.1中删除)。区别在于GL_R8仅将单个通道置于红色组件中,因此GB将为0,A将为1.强度格式将单个通道广播到所有四个组件中,因此RGBA将各自相同值。

您的着色器无需更改。只需获取采样值的红色分量。