首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单人游戏:使RenderTarget的一些像素半透明

单人游戏:使RenderTarget的一些像素半透明
EN

Stack Overflow用户
提问于 2015-03-26 01:45:20
回答 1查看 315关注 0票数 3

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

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

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

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

假设RenderTarget中每个像素的默认Alpha值为solid。任何我没有画的像素,我想保持完全透明,就像你抓起画笔,不是画在纸上,而是画在玻璃上。如果你把那块玻璃放在,比方说,你的旋转地毯上,没有油漆的地方,你会看到旋转地毯。但这不是我看到的,我只是看到了黑色,好像我是“画在黑纸上”,而不是“画在玻璃上”。

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

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

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-03-29 20:36:55

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

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

GraphicsDevice.Clear(Color.Transparent);

它似乎是以默认方式开始的,这就是让我困惑的地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29262844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档