Share via


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 會變得模糊。 未定義其他轉譯目標。 實作可以選擇使用相同狀態將它們全部模糊化。
    • Dithering:未定義。
  • 不支援反鋸齒。

  • 某些實作不會套用輸出寫入遮罩 (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

圖元管線