In d3d11 können Sie mehrere Renderziele ID3D11DeviceContext :: OMSetRenderTargets binden . Aber warum willst du das tun?
In d3d11 können Sie mehrere Renderziele ID3D11DeviceContext :: OMSetRenderTargets binden . Aber warum willst du das tun?
Antworten:
Wenn mehrere Renderziele gebunden sind, können sie vom Pixel-Shader einzeln beschrieben werden. Es ist nicht (unbedingt) der Fall, dass alle Renderziele das gleiche Bild erhalten. Sie können nur die rote Komponente in eine Ausgabe schreiben, nur die blaue in eine andere usw.
Dies wird verwendet, wenn beispielsweise verzögertes Rendern implementiert wird : Positions-, Normal-, Farb- usw. Informationen werden jeweils auf ihr eigenes Renderziel geschrieben.
Der zusätzliche Vorteil der Verwendung mehrerer Renderziele, wie beim verzögerten Rendern, wie von Josh erwähnt, besteht darin, dass Sie die Geometrie der Szene nur einmal an den Vertex-Shader senden und auf verschiedene Pixel-Shader-Ausgaben anwenden, anstatt die Geometrie für jede Ausgabe erneut zu senden brauchen. Dies spart viel Rechenzeit für die GPU. Der Kompromiss für eine schnellere GPU-Leistung ist ein höherer Verbrauch an Bildpufferspeicher.