OpenGL渐变 "banding"工件

标签 opengl

最近,我一直在尝试清理我的openGl渲染。我已经有一段时间了,但是从来没有真正考虑过。这是一个屏幕截图:

经过一些研究,我一直无法弄清楚它到底出了什么问题。我在OSX上使用OpenGl,但在其他系统上尝试过使用OpenGl,并且会出现相同的工件。

最佳答案

您遇到的是每 channel 色彩空间8位动态范围的限制。一个简单的灰度梯度,即每 channel 8位帧缓冲区上的R = B = G只能具有2 ^ 8 = 256个不同的值。如果您在较大的区域(如您的图片中)之间跨度较大,则结果将导致低动态范围 strip 化。

克服此问题的唯一方法是使用更多位数计算梯度。为了在低动态范围屏幕上显示图像,可以使用抖动。

关于OpenGL渐变 "banding"工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005952/

相关文章:

为 OpenGL 使用正确计算模型和 View 矩阵?

c++ - BMP 创建 - C++ ofstream 输出损坏

C - 非左值数组的无效使用

c++ - 应用程序文件未在不同的 Mac 上运行

linux - 如何使用 opengl 和 Qt 在 ARM 平台上启动 linux?

opengl - 为跨平台桌面应用程序选择什么 OpenGL 版本

java - OpenGL 着色器不工作?

opengl - OpenGL 4 中顶点选择的最佳方法

opengl - 3D投影映射

opengl - glTexImage2D函数中的border是什么意思?