0

我需要SpriteBatch在 WPF 或普通 UIKit 应用程序中呈现我期望的图像:

  • 正如您所期望的那样,部分透明的 PNG 相互叠加呈现
  • 我有一个可以修改的 alpha,最好是使用Color.White和修改A值。

最近一直在使用BlendState.NonPremultiplied,但我得到了奇怪的线条,其中部分透明的 PNG 相互重叠。

我在 Windows 上遇到了类似的问题(请参阅此处),但通过更改PremultipliedXNA 内容项目中的设置来修复它。我怎样才能为 MonoGame 做类似的事情?(我期待这里的OpenGL有所不同)

4

1 回答 1

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 出来的预期使用。

于 2012-05-09T17:32:37.310 回答