在 GL-ES 中使用预乘 alpha 进行 alpha 混合是正确的方法吗?

问题描述 投票:0回答:1

据我所知,alpha 合成基本上使用直接 alpha。 但我见过的所有 GLES 混合示例代码都使用预乘 alpha。 这是正确且正确的方法吗? 预乘 alpha 是实时图形中的常规方式吗?

image-processing opengl-es alphablending
1个回答
4
投票

如果您看到的混合示例代码针对 iPhone OS,那是因为 Core Graphics 和 Core Animation 都在预乘 alpha 上运行,因此绘制到

CGBitmapContext
会产生预乘数据,并且非不透明视图内容需要采用预乘 alpha格式以正确合成其他视图。但是,如果您只是尝试将内容混合到不透明视图中,那么只要您的混合与图像数据的格式匹配,任何一种方法都可以工作。

预乘 alpha 数据有优点也有缺点。 Tom Forsyth 对预乘 alpha 的许多有用属性有很好的解释。主要缺点是固定功能片段处理(纹理环境、雾等)的某些阶段是围绕非预乘 alpha 构建的,如果您尝试将它们与预乘数据一起使用,可能不会产生您想要的结果。

© www.soinside.com 2019 - 2024. All rights reserved.