2012-05-05 34 views
0

我需要SpriteBatch来渲染图像我怎么会想到在WPF或正常UIKit的应用程序:MonoGame - BlendState - 2D SpriteBatch

  • 部分透明的PNG图像呈现在彼此的顶部,你所期望的
  • 我有一个alpha可以修改,最好是使用Color.White和修改A值。

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

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

回答

1

我们通过使用两种不同的设置来解决它。

在Windows和XNA:

  • 使用BlendState.NonPremultiplied
  • 更改默认设置,以预乘上所有的PNG
  • 要修改精灵的阿尔法值的内容项目=假,使用Color.White和设置A

在MonoGame和iOS:

  • 使用BlendState.AlphaBlend
  • 离开PNG格式的,是
  • 要修改精灵的阿尔法值,使用Color.White * (float)Alpha/(float)byte.MaxValue

我的PNG图像是预相乘,被精确使用如你期望从Photoshop出来。