据我所知,alpha组合基本上使用直alpha。 但是我见过的所有GLES混合样本代码都使用预乘alpha。 这是正确和正确的方法吗? 在实时图形中,预乘alpha是常规方法吗?
答案 0 :(得分:4)
如果您看到的混合示例代码目标是iPhone OS,那是因为Core Graphics和Core Animation都在预乘alpha上运行,因此绘制成CGBitmapContext
会产生预乘数据,而非不透明视图内容需要采用预乘alpha格式,以便在其他视图上正确合成。但是,如果您只是尝试将内容混合到不透明视图中,那么只要您的混合与图像数据的格式匹配,任何一种方法都可以使用。
预乘alpha数据有好处和缺点。 Tom Forsyth对many useful properties of premultiplied alpha有一个很好的解释。主要缺点是固定功能片段处理(纹理环境,雾等)的某些阶段是围绕非预乘的alpha构建的,如果您尝试将它们与预乘数据一起使用,则可能无法产生您想要的结果。