OpenGL - 在附加层下渲染透明度
Posted
技术标签:
【中文标题】OpenGL - 在附加层下渲染透明度【英文标题】:OpenGL - Rendering Transparency Under Additive Layer 【发布时间】:2014-07-02 17:46:43 【问题描述】:是否有可以使用 OpenGL glBlendFunc 生成的混合方程,它允许在叠加叠加层后面渲染透明颜色 (RGBA)。
在顶层渲染:
这个效果可以使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
实现
在下面渲染:
这种混合效果有公式吗?
【问题讨论】:
通常的方法是更改绘制顺序(即首先根据深度对对象进行排序)。你有什么理由不能这样做? 【参考方案1】:没有用于直接绘制叠加层的 glBlendFunc 选项。信息可以在这里找到:
http://benmcdowell.com/implementing-photoshop-blend-modes-in-opengl/
但是,您的效果似乎不是叠加的,似乎是任一屏幕
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
或加法
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
我建议你尝试所有组合,没有那么多可能。但是,如果您需要更疯狂的效果,则需要编写着色器代码。
附:我撒了谎。您不必编写着色器代码来实现像叠加这样的疯狂效果,但您必须绘制很多次,以至于无法实时使用。我应该说最好使用着色器。
【讨论】:
以上是关于OpenGL - 在附加层下渲染透明度的主要内容,如果未能解决你的问题,请参考以下文章