如何将8位alpha-only纹理传递给GLSL?
答案 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将各自相同值。
您的着色器无需更改。只需获取采样值的红色分量。