首页 > 解决方案 > 使用 alpha 混合组件合成纹理

问题描述

去做 :

我们需要的是纹理具有全红色 (1,0,0) 颜色和 0.5 的 alpha,但是当我们渲染多个 alpha 混合多边形时,这会变得更加复杂。

有没有办法做到这一点?
也许使用不同的屏幕混合模式?
这需要在渲染到纹理时使用 GPU 完成。

使用 OpenGLES 2.0。

请建议。
谢谢

肖恩

标签: alphablendingrender-to-texturehud

解决方案


我们的艺术家找到了这个答案。虽然可能不一样,但非常好。

Opengl 渲染到具有部分透明度(半透明)的纹理,然后将其渲染到屏幕上

我们基本上使用选项 2,将所有内容正常渲染到纹理,从黑色透明纹理开始,但是当将此纹理渲染到 hud 时,修改像素着色器以简单地将颜色除以 alpha。

这是因为假设颜色 (1, 0.5, 0.2) 以 25% 的 alpha 添加到纹理中,那么纹理颜色将为 (0.25, 0.125, 0.05) 和 0.25 alpha。除以 0.25 alpha 后,颜色返回 (1, 0.5, 0.2),这正是我们所需要的。

因此,仅在使用创建的纹理时,将此线添加到像素着色器的末尾

outcol.rgb /= outcol.a

我们测试了多个覆盖的透明胶片,但无法区分。颜色越不透明,原来的“零 alpha 的黑色”就越少。它不需要更改渲染管道,除非您实际使用创建的纹理。

肖恩


推荐阅读