【问题标题】:Order independent transparency in opengl在opengl中订购独立透明度
【发布时间】:2017-09-01 17:48:02
【问题描述】:

我有一个包含不透明和透明对象的场景。我将它们分成 2 组,不透明和透明,然后将不透明的从前到后排序,将透明的从后到前排序。我打开深度缓冲区写入和深度测试并从前到后绘制不透明项目。然后我关闭深度写入保持深度测试开启并从后到前绘制透明项目。

这一切都很好,但据我了解,我可以在没有任何特定顺序的情况下绘制透明项目。我浏览过类似http://www.openglsuperbible.com/2013/08/20/is-order-independent-transparency-really-necessary/ 的文章,看到可以通过更改混合功能来实现与顺序无关的透明度......但我无法真正理解这一点。

我尝试使用那里建议的那些混合方程式,但是对于重叠的透明项目,我得到了错误的组合颜色,除非我使用通常的(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA)。 这真的像看起来那么简单吗?我只是缺少一些简单的东西吗?

【问题讨论】:

标签: opengl opengl-es-2.0 transparency


【解决方案1】:

“可以通过改变混合函数来实现顺序无关的透明度......但我就是无法真正理解这一点。”

我想这就是你的误解所在。

不是通过改变混合函数就可以实现顺序无关的透明度。只是一些混合函数本质上是顺序无关的。

两种常见的与顺序无关的混合函数是加法(GL_ONE,GL_ONE)和乘法(GL_DST_COLOR,GL_ZERO)。但是,如果这些不是适合您的情况的正确混合函数(通常不是),那么您将陷入排序或使用相对昂贵且复杂的与顺序无关的透明度解决方案,例如您在文章中提到的 A 缓冲区链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多