XNA 渲染到贴图

以制作含字符串的texture为例。

 

 

 

 

 

以上有几点要注意,首先要定义一个RenderTarget2D对象,顾名思义,就是渲染目标。为什么会有渲染目标?因为通常情况下我们总是把图画到屏幕上,但实际上我们可以把图画到内存中。这种供画图的“东西”(屏幕或内存)抽象后就叫做渲染目标,更形象地说这里我们生成了一张白纸。一个显卡上有多个渲染目标的放置点,我们可以选择性的把某个渲染目标画到屏幕上,或者仅仅是画到一个Texture2D对象上。构造函数第四个参数是numberLevels,意思是你要给它生成的mipmap有几层。这个作用主要是在3D场景中,为了加速渲染,会给一张贴图同时储存不同压缩比的图像数据,以方便场景中物体与摄像机距离变换时可以快速切换贴图,而不用临时放缩。这里用1,因为2D里没有远近之分。 接下来声明了一个RenderTarget类型的old对象,RenderTarget是RenderTarget2D的父类。这个old的作用是保存当前呈现在屏幕上的画纸上的图像。因为显卡这个“画笔工具”一次只能画一张图,所以当我们要借用它来画我们需要的贴图时,必须先把它之前画一半的图保存起来。

RenderTarget old = graphcisDevice.GetRenderTarget(0);

graphcisDevice.SetRenderTarget(0, rt);

 好了,现在显卡已经对准了我们生成的新的画纸rt,我们把它清空,然后像画其他贴图一样用spriteBatch在上面画上任何东西。 画完之后,要把显卡返回给之前画了一半的图纸old。 然后,我们就可以用rt这张图纸上的东西生成一个Texture2D对象了,一个GetTexture()方法搞定。这时候返回的Texture2D对象上的内容就是刚才用SpriteBatch画的所有东西的一个集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值