如何将 8 位 alpha-only 纹理传递给 GLSL?
问问题
1850 次
1 回答
6
你没有说你正在使用什么 OpenGL 版本。但实际上,由于您使用的是 GLSL,因此您不必关心每像素 8 位数据是否在alpha分量中。你关心的是你的纹理数据只有一个通道,它是每像素 8 位,并且它可以被一个已知的组件访问。
GL 3.x+ 提供GL_R8
图像格式。在此之前,您可以只使用GL_INTENSITY8
(从核心 OpenGL 3.1 中删除)。不同之处在于GL_R8
只将单个通道放入红色分量中,因此 GB 将为 0,A 将为 1。强度格式将单个通道广播到所有四个分量中,因此 RGBA 将是相同的值。
您的着色器不需要更改。只需获取采样值的红色分量。
于 2013-04-21T22:17:26.810 回答