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 - 在附加层下渲染透明度的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL渲染到纹理透明度问题

在 OpenGL 中将粒子渲染为具有透明度的 GL_TRIANGLE_FAN

OpenGL:渲染具有大量纹理透明度的模型,没有绘制顺序?

在 OpenGL 中渲染透明块

Opengl 透明部分被渲染为黑色

OpenGL 四 - 002OpenGL 图形渲染之颜色混合