所有:
我们需要的是纹理具有全红(1,0,0)颜色和0.5的alpha,但是当我们将多个alpha混合多边形相互渲染时,这会变得更加复杂。
有没有办法实现这个目标? 也许使用不同的屏幕混合模式? 这需要在渲染到纹理的同时使用GPU完成。
使用OpenGLES 2.0。
请建议。 谢谢
肖恩
我们的艺术家找到了答案。虽然它可能不完全相同,但它非常好。
我们基本上使用选项2,将所有内容渲染为纹理,从黑色清晰纹理开始,但是当将此纹理渲染到hud时,修改像素着色器以简单地将颜色除以alpha。
这是有效的,因为在25%alpha处将颜色(1,0.5,0.2)添加到纹理中,然后纹理颜色将是(0.25,0.125,0.05)和0.25 alpha。向后划分0.25 alpha会使颜色返回(1,0.5,0.2),这正是我们所需要的。
因此,仅在使用创建的纹理时,将此行添加到像素着色器的末尾
outcol.rgb / = outcol.a
我们测试了多个透明胶片覆盖,无法区分。颜色越不透明,原始的“黑色零阿尔法”就越少。除了实际使用创建的纹理之外,它不需要对渲染管道进行任何更改。
肖恩