多个呈现目标 (Direct3D 9)

多个呈现目标 (MRT) 是指通过单个绘图调用 (IDirect3D9Surface) 呈现到多个图面的功能。 可以相互独立地创建这些图面。 可以使用 IDirect3DDevice9::SetRenderTarget 设置呈现目标。

多个呈现目标具有以下限制:

  • 除非设置了D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS上限,否则所有一起使用的呈现目标图面必须具有相同的位深度,但格式不同。

  • 多个呈现目标的所有表面的宽度和高度应相同。

  • 某些实现无法对多个呈现目标执行后像素着色器操作,包括:无抖动、alpha 测试、无雾化、无混合或掩码,z 测试和模具测试除外。 可支持后像素着色器操作的设备将上限位设置为D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING。

    设置D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING上限后,必须首先查阅 IDirect3D9::CheckDeviceFormat 以及特定图面格式的USAGE_QUERY_POSTPIXELSHADER_BLENDING结果。 如果为 false,则不会对该特定图面格式执行后像素着色器混合操作。 如果为 true,则设备应将相同的状态应用于所有同时呈现目标,如下所示:

    • Alpha 混合:oCi 中的颜色值与 ith 呈现目标混合。
    • Alpha 测试:将使用 oC0 进行比较。 如果比较失败,将终止所有呈现目标的像素测试。
    • 雾:呈现目标 0 将迷雾。 其他呈现目标未定义。 实现可以选择使用相同的状态将它们全部迷雾化。
    • 抖掐:未定义。
  • 不支持抗锯齿。

  • 某些实现不 (D3DRS_COLORWRITEENABLE) 应用输出写入掩码。 具有独立颜色写入掩码的那些。 这是使用新功能位表示的。 可用的独立颜色写入掩码数将等于设备能够使用的最大元素数。

新硬件上限:

D3DCAPS9.NumSimultaneousRTs         
// The value is 1 for all hardware except those that  
//   can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it

像素管道