1

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

4

1 回答 1

4

如果您看到的混合示例代码针对 iPhone OS,那是因为 Core Graphics 和 Core Animation 都在预乘 alpha 上运行,因此绘制到 aCGBitmapContext会产生预乘数据,并且非不透明视图内容需要采用预乘 alpha 格式才能正确合成超过其他观点。但是,如果您只是想将内容混合到不透明的视图中,那么任何一种方法都可以,只要您的混合与图像数据的格式相匹配。

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

于 2010-02-28T18:56:00.657 回答