这是一个很难描述的问题(我使用的是MonoGame,Windows8)。
我希望能够渲染一个半透明的‘精灵’图像,如.png,不是在屏幕上,而是在一个清晰的图像上,这样做几次,通过将各种图像混合在一起,实际上创建了一个新的雪碧图...然后,我希望能够将这个新的精灵图像渲染到屏幕上,而我没有绘制的区域保持透明(即主要是在边缘周围)。
当然,我可以加载一个半透明的“精灵”.png图像并将其‘粘贴’到RenderTarget上;我可以这样做几次,‘精灵’就会很好地融合在一起。然后,我可以将合成图像RenderTarget‘粘贴’(即绘制/渲染)到屏幕上。
问题是,当RenderTarget被绘制到屏幕上时,它周围有一个实心块。
假设RenderTarget中每个像素的默认Alpha值为solid。任何我没有画的像素,我想保持完全透明,就像你抓起画笔,不是画在纸上,而是画在玻璃上。如果你把那块玻璃放在,比方说,你的旋转地毯上,没有油漆的地方,你会看到旋转地毯。但这不是我看到的,我只是看到了黑色,好像我是“画在黑纸上”,而不是“画在玻璃上”。
如果我可以直接将图像渲染到另一个图像上,就不会有问题(可以这样做吗?):我会创建一个“空的”.png图像,可能是在PhotoShop中,即不绘制任何内容,然后在启用透明度的情况下保存它,然后将图像渲染到该图像上,然后保存结果。但RenderTarget似乎已经不透明了。
我希望上面的内容是清楚的。我已经搜索并找到了很多关于操纵Texture2D对象的alpha的答案,但我找不到任何关于操纵RenderTarget2D的alpha的答案。
谢谢你的帮助!
发布于 2015-03-29 20:36:55
我终于找到了解决方案,所以我将回答我自己的问题,以防它对其他人有用。
这很简单。实际上,您可以将RenderTarget2D转换为透明的,因为它显然基本上就是一个Texture2D。您可以这样清除它:
GraphicsDevice.Clear(Color.Transparent);
它似乎是以默认方式开始的,这就是让我困惑的地方。
https://stackoverflow.com/questions/29262844
复制相似问题