2017-11-24 4 views
0

Ich bin mir bewusst, dass ich Multisampling anwenden kann, indem Sie die Beispielzählung für Beispiel 4 festlegen und die Rasterisierungsstufe einrichten, um Multisampling anzuwenden. Das funktioniert großartig, aber im Moment möchte ich nur Multisampling auf nur einen Teil der Zeichenaufrufe anwenden, die ich mache. Wie kann ich das machen?Wenden Sie Multisampling/Anti-Aliasing für bestimmte Zeichenaufrufe an, nicht alle

In Pseudo-Code, ist es das, was ich erreichen will:

> build vertices data for a simple triangle 
> map and copy vertices data to device 
> send draw call to device which does NOT apply anti aliasing 

> build vertices data for a simple rectangle 
> map and copy vertices data to device 
> send draw call to device which applies multisampling/antialiasing 

Vielen Dank im Voraus für jede Hilfe!

Antwort

1

Es gibt einen Rasterizer-Status in Direct3D 11 mit der Bezeichnung D3D11_RASTERIZER_DESC.MultisampleEnable. Es ist jedoch zu beachten, dass dieses nur Multisample-Rendering auf Direct3D Feature Level 9.x und 10.0 deaktiviert. Auf Direct3D Leistungsstufe 10.1 oder höher Hardware, es tut nichts zu ändern, wie Punkte oder Dreiecke Ziele werden gerenderte machen mit einer Probe zählen größer als 1 Stattdessen setzt er die Linie Algorithmus in Kombination mit AntialiasedLineEnable, die Sie lesen können auf MSDN.

Mit anderen Worten, wenn Sie auf eine MSAA-Oberfläche rendern, wird es in den meisten Fällen multisampled. Die Frage ist: Was versuchst du wirklich hier zu erreichen?

+0

Ich mache einig Overlay-Software auf den 3D-Ziele. Aber da ihr Gerät bereits initialisiert ist und einige nur eine Anzahl von 1 definiert haben, muss ich dem Grafikgerät mitteilen, dass es zB 4x Multisampling nur auf meine Zeichenaufrufe anwenden soll. Ohne das 3D-Zielprogramm zu beeinflussen. –

0

Wie Chuck Walbourn erklärt, ist es nicht möglich, Single- und Multi-Sampling-Rendering mit demselben Renderziel zu mischen. Es ist jedoch möglich, Ihren Multi-Sampling-Inhalt in eine Textur zu rendern und diese in einen Single-Sampling-Inhalt aufzulösen. Sie können diese Textur auf Ihr Single-Samples-Renderziel rendern.

Die Methode zum Auflösen einer mehrfach abgetasteten Ressource in eine Einzelabtastung ist ID3D11DeviceContext::ResolveSubresource().

Verwandte Themen