在我的 XNA 项目中,我使用未处理的图像并绘制它们,BlendState.NonPremultiplied使它们在边缘看起来很正常。但是当我在方法中使用非白色 ( Color.FromNonPremultiplied(12, 34, 56, 78)) 时SpriteBatch.Draw,它不会像BlendState设置为默认值时那样对精灵进行着色。
如何在不切换到默认混合状态的情况下实现与默认混合状态相同的着色?
在我的 XNA 项目中,我使用未处理的图像并绘制它们,BlendState.NonPremultiplied使它们在边缘看起来很正常。但是当我在方法中使用非白色 ( Color.FromNonPremultiplied(12, 34, 56, 78)) 时SpriteBatch.Draw,它不会像BlendState设置为默认值时那样对精灵进行着色。
如何在不切换到默认混合状态的情况下实现与默认混合状态相同的着色?
文档说Color.FromNonPremultiplied Method:将非预乘 alpha 颜色转换为包含预乘 alpha 的颜色。
基于此,您应该使用
BlendState.NonPremultiplied或者Color(12, 34, 56, 78)
或者
BlendState.AlphaBlend和Color.FromNonPremultiplied(12, 34, 56, 78)
一起。