最近,我一直在尝试清理我的openGl渲染。我已经有一段时间了,但是从来没有真正考虑过。这是一个屏幕截图:
经过一些研究,我一直无法弄清楚它到底出了什么问题。我在OSX上使用OpenGl,但在其他系统上尝试过使用OpenGl,并且会出现相同的工件。
最佳答案
您遇到的是每 channel 色彩空间8位动态范围的限制。一个简单的灰度梯度,即每 channel 8位帧缓冲区上的R = B = G只能具有2 ^ 8 = 256个不同的值。如果您在较大的区域(如您的图片中)之间跨度较大,则结果将导致低动态范围 strip 化。
克服此问题的唯一方法是使用更多位数计算梯度。为了在低动态范围屏幕上显示图像,可以使用抖动。
关于OpenGL渐变 "banding"工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005952/