GL_LUMINANCE,GL_LUMINANCE_ALPHA的替换

Phr*_*ogz 11 opengl image opengl-3

对于内存高效的实时嵌入式图形,我传统上使用GL_LUMINANCE在需要无损灰度图像时(或GL_LUMINANCE_ALPHA需要alpha时)编码的DDS图像.但是,我刚刚发现这些文件格式在OpenGL 3已弃用并从3.1中删除.

是否有无损灰度级数据的替换图像格式,每像素8位或更少(或涉及alpha时为16bpp)?

gen*_*ult 8

如果您在该维基页面上向上滚动一下,您将看到GL_RED/GL_R*以及GL_RG*单通道和双通道图像.

glTexImage2D():

GL_RED:每个元素都是一个红色组件.GL将其转换为浮点并通过将0连接到绿色和蓝色而将其组合成RGBA元素,将1组合为alpha ...

GL_RG:每个元素都是红色/绿色双.GL将其转换为浮点数并将其组合成RGBA元素,方法是将0附加为蓝色,将1附加为alpha ...

正如GuyRT所指出的,如果你有EXT_texture_swizzle/ARB_texture_swizzle和/或OpenGL版本> = 3.3,你可以使用swizzle mask来扩展/重新排列你的纹理颜色组件.

  • 您还可以使用调配,以便着色器将值视为亮度/ alpha - 请查看:http://www.opengl.org/wiki/Texture#Swizzle_mask (4认同)
  • 不,您必须自己在着色器中将它们展开。 (2认同)