【发布时间】:2020-09-06 11:49:09
【问题描述】:
我正在使用 openGL 进行科学可视化,我尝试创建一个“彩色雾”来说明多维领域。我希望颜色的色调代表场的方向,颜色的亮度对应场的强度。
我使用GL_BLEND 和glBlendFunc(GL_ONE, GL_ONE) 来实现我创建的表面颜色的叠加混合。问题是:在某些地方颜色会饱和。例如:
(1, 0, 0) + (1, 0, 0) = (2, 0, 0),当它被渲染时它就变成了(1 , 0, 0) (即“溢出”刚刚被切断)。这不是我想要的处理方式。我想通过保留色调和亮度来处理溢出,即
(2, 0, 0) 应该翻译成(1, 0.5, 0.5) (即较浅的红色,亮度是“纯”的两倍的红色红色)。
有没有什么方法可以用 OpenGL 实现这个(或类似的东西)?
【问题讨论】:
标签: opengl transparency blending color-blending saturation-arithmetic