MonoGame - BlendState - 2D SpriteBatch

时间:2012-05-05 16:09:47

标签: c# .net ios xamarin.ios monogame

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

  • 部分透明的PNG渲染在一起,正如您所期望的那样
  • 我有一个我可以修改的字母,最好是使用Color.White并修改A值。

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

我在Windows (see here)上遇到过类似的问题,但是通过更改XNA内容项目中的Premultiplied设置来修复它。我如何为MonoGame做类似的事情? (我期待OpenGL在这里有所不同)

1 个答案:

答案 0 :(得分: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中使用。