首页 > 解决方案 > 荧光笔混合功能 OpenGL

问题描述

用于在 OpenGL 中实现荧光笔的标准内置混合函数是什么?使用glBlendEquation(GL_MIN);会产生所需的效果,但也不允许基于不透明度的混合。我正在使用建模透明度glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);是否可以使用最小混合来解释不透明度?如果不是,最好使用带有帧缓冲区对象的自定义着色器吗?

作为参考,以下是所需结果的示例(未使用 OpenGL 渲染):

在此处输入图像描述

标签: openglblending

解决方案


我最终将可突出显示的元素渲染为浮点纹理并使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);. 然后可以使用相同的混合函数将此中间帧缓冲区与默认帧缓冲区 0 混合。减法混合可以通过将片段着色器中最终值的 rgb 分量乘以 -1 来模拟。浮点纹理支持负值,通常可作为帧缓冲区颜色附件写入。有关详细信息,请参阅将负值混合到帧缓冲区 0 opengl中。


推荐阅读