荧光笔混合函数 OpenGL

Highlighter blend func OpenGL

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

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

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