在OpenGL ES中,颜色的范围是0-1f。这些值是否直接映射到0-255(又称8位)?还是0-1f范围可以在高于8位的情况下获得更好的色彩?
我正在以编程方式生成一个模式,其中rgb相等(因为它是灰度的),因此图像有效地是8位的。我想获得更深的灰度色彩(例如16位),这可能吗?
取决于您的输入/输出纹理格式;如果是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位的精度)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句