多個轉譯目標 (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:Undefined。
不支援反鋸齒。
某些實作不會套用輸出寫入遮罩 (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
相關主題