Monogame和XNA - 如何加载/使用半透明图像?

时间:2013-10-02 04:50:36

标签: c# xna xna-4.0 monogame

我是一名经验丰富的开发人员,但对于图形/游戏编程来说,这是一个完全的菜鸟,所以请 - 向我解释一下,就像我5岁那样。

我正在编写一个简单的游戏,以便学习游戏编程。我使用Paint.NET创建了一个* .png图像,并使图像透明50%。然而,当我加载图像时,它似乎没有任何透明度渲染。该对象看起来像纯色。 (为了清楚起见,我试图让整个图像半透明或“透视”,而不仅仅是制作一个透明背景的实体图像。虽然我也希望能够做到这一点。)

我很高兴展示任何可能有用的代码,尽管你可以假设我在这里没有做任何想法。例如,加载纹理:

var Texture = content.Load<Texture2D>("Gamepiece");

并绘制它:

spriteBatch.Draw(Texture, Location, Color.White);

我的begin语句使用默认值。我没有传递任何参数(我还是不了解它们)。

spriteBatch.Begin();

1 个答案:

答案 0 :(得分:5)

诀窍在于SpriteBatch.Begin方法的参数。在您的情况下,您想要设置BlendState。迟早你可能也想要使用其他一些参数但是现在你可以摆脱2参数过载。如果您要将资产预编译为XNB文件,您可能需要BlendState.AlphaBlend或BlendState.Additive,如下所示:

_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

或者,如果您直接加载png,您可能需要BlendState.NonPremultiplied。四处寻找值,看看哪种效果最适合你。