【问题标题】:Monogame: making SOME pixels of a RenderTarget semi-transparentMonogame:使 RenderTarget 的一些像素半透明
【发布时间】:2015-05-29 13:08:32
【问题描述】:

这是一个很难描述的问题(我使用的是 MonoGame,Windows 8)。

我希望能够渲染一个半透明的“精灵”图像,例如 .png,而不是在屏幕上而是在清晰的图像上,这样做几次实际上是通过混合来创建一个新的精灵图像各种图像...然后,我希望能够将这个新的精灵图像渲染到屏幕上,而我还没有绘制到保持透明的区域(即主要在边缘周围)。

当然,我可以加载半透明的“sprite”.png 图像并将其“粘贴”到 RenderTarget;我可以多次这样做,“精灵”会很好地融合。然后我可以将合成图像 RenderTarget '粘贴'(即绘制/渲染)到屏幕上。

问题是,当 RenderTarget 被绘制到屏幕上时,它周围有一个实心块。

大概,RenderTarget 中每个像素的默认 alpha 值是实心的。任何我不绘制的像素,我都希望保持完全透明,就像你抓起画笔而不是画在纸上而是画在玻璃上一样。如果你然后把那块玻璃放在你的漩涡地毯上,在没有油漆的地方,你会看到漩涡地毯。但这不是我看到的,我只是看到黑色,好像我是“画在黑纸上”而不是“画在玻璃上”。

如果我可以将一个图像直接渲染到另一个图像上就不会出现问题(可以这样做吗?):我会创建一个“空”的 .png 图像,可能在 PhotoShop 中,即不绘制任何东西然后保存它启用了透明度,我会将我的图像渲染到上面,然后保存结果。但是 RenderTarget 似乎已经是不透明的了。

我希望以上内容很清楚。我已经搜索并找到了很多关于操纵 Texture2D 对象的 alpha 的答案,但是我找不到任何关于操纵 RenderTarget2D 的 alpha 的答案。

感谢您的帮助!

【问题讨论】:

    标签: alpha monogame rendertarget


    【解决方案1】:

    我终于找到了解决方案,所以我将回答我自己的问题,以防它对其他人有用。

    这很简单。实际上,您可以将 RenderTarget2D 变成透明的,因为它显然基本上是一个 Texture2D。你可以这样清除它:

    GraphicsDevice.Clear(Color.Transparent);

    它似乎在默认情况下开始稳定,这让我感到困惑。

    【讨论】:

    • 谢谢,这解决了我遇到的类似问题:)
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多