Answers:
我现在使用预乘Alpha的XNA 3.1(在4.0中添加了本机预乘Alpha支持)。
通常,这可以节省我的时间,并确保图像的透明区域具有正确的颜色。我还移植到Silverlight,默认情况下会进行预乘法。
XNA的内容管道使添加预分散的alpha预处理变得非常容易。
该链接包含执行转换的代码。对于每个像素:
c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);
建立内容管道有很多要说的。如果您不是使用XNA,而是使用Visual Studio,则可以自己拼凑一个。任何其他IDE /构建过程也应具有能力。
最后,如果您的构建中没有内容处理步骤(因此很可能您没有太多内容),则在加载纹理时可以在运行时轻松地执行预乘法。它将为您的纹理加载时间增加一些常数。
(如果含义不明确:您可能不应该编辑预乘的Alpha图像。如果可以,请导出预乘的图像,或者最好对其进行预处理。)