Graphics - Render Target

一些图形学的概念介绍,个人摘抄或整理,作为个人文章的词条引用;

渲染目标(Render Target)

渲染目标是一个缓冲,显卡通过这个缓冲使用一个Effect类绘制场景的像素;

默认的渲染目标叫做后置缓冲(GPU流水线),物理上就是包含下一帧要绘制的信息的一块显存;你可以使用RenderTarget2D类创建另一个渲染目标,在显存中保留一块新区域用于绘制;大多数游戏在后置缓冲之外将大量的内容绘制到其它的渲染目标内(Off-Screen,离屏渲染),然后编译这些不同的图像元素,将它们组合起来构成最终的后置缓冲;

 

一个渲染目标具有高和宽;后置缓冲的高和宽就是游戏的最终分辨率(而在Xbox 360中最终结果要进行缩放匹配用户的屏幕);而一个Off-Screen渲染目标无需和后置缓冲有相同大小的高和宽,最终图像的小部分可以绘制到一个小渲染目标中,然后将它复制到另一个渲染目标;

渲染目标还有一个surface格式,表明每个像素分配到多少bits和它们如何分割成红,绿,蓝,alpha通道;例如,SurfaceFormat.Bgr32给每个像素分配32 bits:每个颜色通道8 bits ,alpha通道8 bits;渲染目标还可以对所有绘制在其中的图像施加反锯齿(antialiasing);

要使用渲染目标,需要创建一个指定高、宽或其他选项的RenderTarget2D对象;然后调用GraphicsDevice.SetRenderTarget将这个渲染目标作为当前渲染目标;从这一步开始,任何对Draw的调用会绘制到这个渲染目标;当结束渲染目标后,调用 GraphicsDevice.SetRenderTarget切换到一个新的渲染目标(或设置为null切换到后备缓冲); 然后你就可以在任何时候调用RenderTarget2D.GetTexture获取渲染目标的内容进行后继处理;

渲染目标可以和depth-stencil缓冲结合起来使用;如果你设置一个新的渲染目标,这个渲染目标会使用一个已存在的depth-stencil缓冲;如果新渲染目标有一个不同于depth-stencil缓冲的multisampling设置,或更大的宽和高,你就需要一个新的depth-stencil缓冲匹配这种情况;你还需要在depth-stencil缓冲中使用一个匹配渲染目标表面格式的深度格式;有时你可以同时渲染超过一个以上的渲染目标;你的图形设备支持的渲染目标的数量可以从MaxSimultaneousRenderTargets属性获得;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DoomGT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值