MonoGame – BlendState – 2D SpriteBatch
我需要SpriteBatch
来呈现图片我如何在WPF或一个普通的UIKit应用程序:
- 就像你所期望的那样,部分透明的PNG呈现在另一个之上
- 我有一个alpha我可以修改,最好是像使用
Color.White
和修改A
值。
最近的一直使用BlendState.NonPremultiplied
,但我得到奇怪的行部分透明PNG重叠在一起。
我在Windows上遇到了类似的问题(请参阅此处) ,但通过更改XNA内容项目中的Premultiplied
设置来解决此问题。 我怎么能做类似的MonoGame? (我期待OpenGL在这里有所不同)
我们通过使用两种不同的设置来解决它。
在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中出来的方式使用。