【问题标题】:Monogame and XNA - how to load/use a semi-transparent image?Monogame 和 XNA - 如何加载/使用半透明图像?
【发布时间】:2013-10-02 04:50:35
【问题描述】:

我是一位经验丰富的开发人员,但对图形/游戏编程一窍不通,所以请 - 像我 5 岁一样向我解释一下。

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

我很乐意展示任何可能有帮助的代码,尽管您可以假设我在这里没有做任何花哨的事情。例如,加载纹理:

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

然后画出来:

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

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

spriteBatch.Begin();

【问题讨论】:

  • 现在接受答案还为时不晚 :)

标签: c# xna xna-4.0 monogame


【解决方案1】:

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

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

或者,如果您直接加载 png,您可能需要 BlendState.NonPremultiplied。玩转这些值,看看哪种效果最适合您。

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 2011-07-01
    • 2020-02-26
    • 1970-01-01
    • 2016-09-01
    • 2010-12-19
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多