opengl - 荧光笔混合功能 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 来模拟。浮点纹理支持负值,通常可作为帧缓冲区颜色附件写入。有关详细信息,请参阅将负值混合到帧缓冲区 0 opengl中。
推荐阅读
- javascript - 为什么我的 $(window).load(function() 在 document.ready 函数中不起作用?
- lua - 执行 lua 脚本时出现未处理的内部错误
- jquery - 关闭菜单的所有元素(包括子菜单)
- c++ - 尝试使用堆栈简化目录路径时未解决的分段错误
- jenkins-pipeline - 如何从 Jenkins 构建中触发 Artifactory 许可证检查?
- docker - 我应该如何在 mlflow 项目中安装 docker 卷?
- vb.net - If 语句使用 NumericUpDown
- javascript - 使用 jquery 迭代表格单元格
- android - 通过 Android 应用接收蓝牙低功耗数据
- c - 使用 xlib 绘制边框(框架)