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

3
我是一名经验丰富的开发人员,但对于图形/游戏编程却是一个彻底的新手,所以请你像我五岁一样解释一下。
我正在编写一个简单的游戏来学习游戏编程。我使用Paint.NET创建了一个*.png图像,并使图像透明度为50%。然而,当我加载图像时,它似乎没有任何透明度。物体看起来像一个实心颜色。(仅仅想要整个图像半透明或“透明”,不仅仅是做一个有透明背景的实心图像。虽然我也想能够这样做。)
我很乐意展示任何可能有帮助的代码,虽然你可以假定我在这里并没有做任何花哨的事情。例如,加载一个纹理:
var Texture = content.Load<Texture2D>("Gamepiece");

并将其绘制出来:

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

我的开始语句使用默认值。我没有传递任何参数(我对它们也没有理解)。

spriteBatch.Begin();
1个回答

5
技巧在于SpriteBatch.Begin方法的参数设置。在您的情况下,您需要设置BlendState。迟早您可能还想使用其他一些参数,但现在您可以使用两个参数的重载。如果您将资产预编译成XNB文件,则可能需要像这样使用BlendState.AlphaBlend或BlendState.Additive:
_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

如果您直接加载png文件,则可能需要使用BlendState.NonPremultiplied。尝试调整值,看看哪种效果最适合您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接