Monogame:使RenderTarget的一些像素半透明

时间:2015-03-25 17:45:20

标签: alpha monogame rendertarget

这是一个非常难以描述的问题(我正在使用MonoGame,Windows 8)。

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

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

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

据推测,RenderTarget中每个像素的默认alpha值是实数。我不想画的任何像素,我想要保持完全透明,就像你抓住画笔一样不涂在纸上而是涂在玻璃上。如果你把那张玻璃放在你的旋涡地毯上,那些没有油漆的地方就会看到旋涡般的地毯。但那不是我所看到的,我只看到黑色,好像我'画在黑纸上'而不是'画在玻璃上'。

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

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

GraphicsDevice.Clear(Color.Transparent);

这似乎是默认的开始,这让我很困惑。

相关问题