在D3D中使用MRT(Multiple Render Targets)

 Multi-Render Target(MRT)可以使程序在一次渲染中同时写数据到多个Render Target中。这个特性在做Post Effect中很有用,比如需要写Depth, Normal,Geometry数据到RT中以待后用时,使用MRT可以减少生成这些数据的Pass。使用MRT的过程中主要有以下步骤:

  1. MRT的使用需要硬件的支持,在使用前可以先查询硬件的支持能力。
  2. 在获知硬件支持MRT之后,使用MRT就跟使用单个普通的Render Target没有两样,只不过在绑定RT时指定对应的RT索引即可,SetRenderTarget(rtIndex, …)。注意:在绑定RT的过程中同样需要创建一些暂存的Surface来存储相应层上的Default RT信息,以便之后进行还原。
  3. 成功绑定MRT之后,在Pixel shader中可以通过标识COLOR0,COLOR1,…来写入内容到对应的RT之中。完成生成Pass之后即是RT的使用了。

当然,在MRT的使用中还是有些限制的,主要有

  • 设定的RT需要具有相同的宽高
  • 设定的RT一般需要要相同的位宽,比如同是16bits或32bits

更多的信息在D3D SDK里边有更详细的描述

你可能感兴趣的:(存储,shader)