Share via


Mehrere Renderziele (Direct3D 9)

Multiple Render Targets (MRT) bezieht sich auf die Möglichkeit, mit einem einzelnen Zeichnungsaufruf auf mehreren Oberflächen (siehe IDirect3D9Surface) zu rendern. Diese Oberflächen können unabhängig voneinander erstellt werden. Renderziele können mit IDirect3DDevice9::SetRenderTarget festgelegt werden.

Für mehrere Renderziele gelten die folgenden Einschränkungen:

  • Alle Renderzieloberflächen, die zusammen verwendet werden, müssen dieselbe Bittiefe aufweisen, können jedoch unterschiedliche Formate aufweisen, es sei denn, die D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS-Obergrenze ist festgelegt.

  • Alle Oberflächen eines mehrfachen Renderziels sollten die gleiche Breite und Höhe aufweisen.

  • Einige Implementierungen können keine Nach-Pixel-Shader-Vorgänge auf mehreren Renderzielen ausführen, einschließlich: kein Dithering, Alphatest, kein Beschlagen, keine Überblendung oder Maskierung, außer Z-Test und Schablonentest. Geräte, die Post-Pixel-Shadervorgänge unterstützen können, legen das Cap Bit auf D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING fest.

    Wenn die D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING-Obergrenze festgelegt ist, müssen Sie zuerst IDirect3D9::CheckDeviceFormat mit dem USAGE_QUERY_POSTPIXELSHADER_BLENDING Ergebnis für das spezifische Oberflächenformat konsultieren. Bei "false" sind für dieses spezifische Oberflächenformat keine Nach-Pixel-Shader-Mischvorgänge verfügbar. Wenn true, wird erwartet, dass das Gerät denselben Zustand auf alle gleichzeitigen Renderziele wie folgt anwendet:

    • Alphamischung: Der Farbwert in oCi wird mit dem Ith-Renderziel gemischt.
    • Alphatest: Der Vergleich erfolgt mit oC0. Wenn der Vergleich fehlschlägt, wird der Pixeltest für alle Renderziele beendet.
    • Nebel: Renderziel 0 wird beschlagen. Andere Renderziele sind nicht definiert. Implementierungen können auswählen, dass sie alle denselben Zustand verwenden.
    • Dithering: Undefiniert.
  • Es wird kein Antialiasing unterstützt.

  • Einige Implementierungen wenden die Ausgabeschreibmaske (D3DRS_COLORWRITEENABLE) nicht an. Diejenigen, die können, verfügen über unabhängige Farbschreibmasken. Dies wird mithilfe eines neuen Funktionsbits ausgedrückt. Die Anzahl der verfügbaren unabhängigen Farbschreibmasken entspricht der maximalen Anzahl von Elementen, zu der das Gerät in der Lage ist.

Neue Hardwarekappen:

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

Pixelpipeline