什么是渲染目标?

渲染目标是用于渲染像素的显存缓冲区。渲染目标的一个常见用途是离屏渲染。(你暂时看成与后台缓存区类似的一块显存)

图形管道有一个称为后台缓冲区的默认渲染目标,它是包含要绘制的下一个帧的视频内存的一部分。如果您的程序不创建渲染目标,并且渲染到屏幕,则默认情况下使用后台缓冲区。(这就是不同之处)使用RenderTarget2D类创建额外的渲染目标。一种常见的情况是呈现一个或多个离屏渲染目标,并将它们组装到后台缓冲区中以产生最终帧。

RenderTarget2D类派生自Texture2D类,因为渲染目标包含2D纹理。这是从以前版本的XNA Game Studio中改变而来的。要像绘制渲染目标一样绘制纹理,请直接使用渲染目标对象。也就是说,将RenderTarget2D对象传递给采用Texture2D对象的任何方法。要将渲染目标数据读回到CPU,请调用Texture2D.GetData方法。有关使用渲染目标的更多信息,请参阅创建渲染目标。
要使用渲染目标,请使用您喜欢的宽度,高度和其他选项创建RenderTarget2D对象。调用GraphicsDevice.SetRenderTarget使渲染目标成为当前渲染目标。你所做的任何后续的Draw调用都将绘制到渲染目标中,而不是后台缓冲区。完成渲染后,调用GraphicsDevice.SetRenderTarget并将其传递给null以将设备再次渲染到后台缓冲区。
创建渲染目标时,还需要考虑其他因素以选择宽度和高度。例如,您应该选择后台缓冲区的宽度和高度以匹配游戏窗口的大小(尽管Windows Phone和Xbox360会根据用户的屏幕缩放最终结果)。这可以防止在将后台缓冲区复制到屏幕时进行任何调整。但是,屏幕外渲染目标不需要与后台缓冲区具有相同的宽度和高度。最终的图像可以在几个小的渲染目标中渲染,然后在更大的渲染目标中重新组合。
渲染目标具有表面格式,该格式描述向每个像素分配了多少位,以及它们如何在红色,绿色,蓝色和阿尔法之间进行划分。例如,SurfaceFormat.Bgr565每个像素分配16位;蓝色和红色5位,绿色6位。
渲染目标与深度模板缓冲区配合工作。在创建渲染目标时,depth-stencil缓冲区的深度格式被指定为渲染目标构造函数的参数之一。无论何时您为设备设置新的渲染目标,匹配深度缓冲区也会设置到设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值