Android OpenGL ES中的灰度颜色深度

时间:2016-10-03 15:34:28

标签: android opengl-es

在OpenGL ES中,颜色范围为0-1f。这些值是否直接映射到0-255,即8位?或者0-1f范围是否在高于8位的情况下实现更精细的颜色?

我以编程方式生成一个模式,其中rgb相等(因为它的灰度),因此图像有效地为8位。我希望在16位等灰度级中获得更深的色彩深度,这可能吗?

1 个答案:

答案 0 :(得分:1)

取决于您的输入/输出纹理格式;如果它是RGB565那么它将小于8位,如果它是RGB10_A2那么它将超过8位。

纹理过滤(例如双线性或三线性)通常以比原始数据更高的精度完成,因此可能导致不完全如此的值。 8位纹理的倍数为1/256。

  

我希望获得更深的灰度级颜色深度,例如16位,这可能吗?

OpenGL ES 3.0具有宽整数格式,OpenGL ES ES 3.2具有fp16和fp32格式,因此绝对可以以每个通道8位以上的方式存储相对任意的数据。

然而,真正的问题是出于什么目的?如果您打算在屏幕上显示该值,则可能的情况是您没有设备实际上能够显示每通道16位颜色。几乎所有的消费级监视器和移动设备面板都是每个颜色通道8位(在移动设备中,许多甚至不是这样,并且接受8位数据,但在面板中仅显示6或7位精度)。