Dela via


Flera återgivningsmål (Direct3D 9)

Flera återgivningsmål (MRT) refererar till möjligheten att återge till flera ytor (se IDirect3D9Surface) med ett enda anrop. Dessa ytor kan skapas oberoende av varandra. Renderingsmål kan anges med hjälp av IDirect3DDevice9::SetRenderTarget.

Flera återgivningsmål har följande begränsningar:

  • Alla återgivningsmålytor som används tillsammans måste ha samma bitdjup men kan ha olika format, såvida inte D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS-taket har angetts.

  • Alla ytor i ett mål för flera återgivningar bör ha samma bredd och höjd.

  • Vissa implementeringar kan inte utföra skuggningsåtgärder efter pixel på flera återgivningsmål, inklusive: ingen dithering, alfatest, ingen fogging, ingen blandning eller maskering, förutom z-test- och stenciltestet. Enheter som har stöd för skuggningsåtgärder efter pixel ställer in cap-biten på D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    När D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING-taket har angetts måste du först läsa IDirect3D9::CheckDeviceFormat med USAGE_QUERY_POSTPIXELSHADER_BLENDING resultat för det specifika ytformatet. Om det är falskt blir inga blandningsåtgärder efter pixelskuggning tillgängliga för det specifika ytformatet. Om det är sant förväntas enheten tillämpa samma tillstånd på alla samtidiga återgivningsmål enligt följande:

    • Alfablandning: Färgvärdet i oCi blandas med det i:e återgivningsmålet.
    • Alfatest: Jämförelse sker med oC0. Om jämförelsen misslyckas avslutas pixeltestet för alla återgivningsmål.
    • Dimma: Rendera mål 0 blir dimmigt. Andra återgivningsmål är odefinierade. Implementeringar kan välja att dimma dem alla med samma tillstånd.
    • Dithering: Odefinierad.
  • Inga antialias stöds.

  • Vissa implementeringar tillämpar inte skrivmasken för utdata (D3DRS_COLORWRITEENABLE). De som kan ha oberoende färgskrivningsmasker. Detta uttrycks med hjälp av en ny funktionsbit. Antalet tillgängliga oberoende färgskrivningsmasker är lika med det maximala antalet element som enheten kan använda.

Nya maskinvarutak:

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

Pixel Pipeline