【问题标题】:MonoGame - BlendState - 2D SpriteBatchMonoGame - BlendState - 2D SpriteBatch
【发布时间】:2012-05-10 01:32:37
【问题描述】:
我需要SpriteBatch 来呈现我在 WPF 或普通 UIKit 应用程序中所期望的图像:
- 如您所料,部分透明的 PNG 相互叠加呈现
- 我有一个可以修改的 alpha,最好是使用
Color.White 并修改 A 值。
最近一直在使用BlendState.NonPremultiplied,但我得到奇怪的线条,部分透明的 PNG 相互重叠。
我在 Windows (see here) 上遇到了类似问题,但通过更改 XNA 内容项目中的 Premultiplied 设置修复了它。我怎样才能为 MonoGame 做类似的事情? (我期待这里的 OpenGL 有所不同)
【问题讨论】:
标签:
c#
.net
ios
xamarin.ios
monogame
【解决方案1】:
我们使用两种不同的设置解决了这个问题。
在 Windows 和 XNA 上:
- 使用
BlendState.NonPremultiplied
- 将所有 PNG 的内容项目的默认设置更改为 Premultiply = False
- 要修改精灵的 Alpha 值,请使用
Color.White 并设置 A 值
在 MonoGame 和 iOS 上:
- 使用
BlendState.AlphaBlend
- 保持 PNG 不变
- 要修改精灵的 Alpha 值,请使用
Color.White * (float)Alpha / (float)byte.MaxValue
我的 PNG 没有 预乘,并且完全按照您从 Photoshop 中得到的预期使用。