2016-03-31 16 views
0

Ich erstelle eine kleine Spielengine in Direct X 11, die großartig läuft, aber mir ist aufgefallen, dass sowohl 3D-Objekte als auch 2D-Objekte beim Rendern sehr rau aussehen. Ich kam vorher von Direct X 9 und dieses Problem gab es dort nicht. Ich habe mich gefragt, wie ich Anti-Aliasing oder eine Art Multi-Sampling richtig aktivieren kann, damit meine Texturen nicht mit gezackten Kanten erscheinen.Direct X 11 gezackte Kanten

swapChainDesc.SampleDesc.Count = 2; 
swapChainDesc.SampleDesc.Quality = 0; 

depthBufferDesc.SampleDesc.Count = 2; 
depthBufferDesc.SampleDesc.Quality = 0; 

Dies sind die Zählung und Qualität Kombinationen aber egal, welche Einstellung ist hier kein visueller Unterschied ist oder Direct3D fehl, das Gerät zu erstellen. Meine GPU überschreibt nichts, da die Einstellungen so konzipiert sind, dass sie für jede Anwendung geeignet sind.

Antwort

1

Neben der Aktivierung der MSAA Probenanzahl für die Renderziel der Swapkette, Ihre Tiefe/Stencil Buffer und die Verwendung der richtigen Werte für ähnliche Ansichten (D3D11_TEX2DMS_RTV, D3D11_DSV_DIMENSION_TEXTURE2DMS), müssen Sie festlegen, tatsächlich D3D11_RASTERIZER_DESC.MultisampleEnable auf TRUE in Ihrem Rasterizer heißt es:

CD3D11_RASTERIZER_DESC rastDesc(D3D11_FILL_SOLID, D3D11_CULL_NONE, FALSE, 
    D3D11_DEFAULT_DEPTH_BIAS, D3D11_DEFAULT_DEPTH_BIAS_CLAMP, 
    D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS, TRUE, FALSE, 
    TRUE /*this is MSAA enable*/, FALSE); 

Siehe Simple rendering Lektion für DirectX Tool Kit für ein ausführlicheres Beispiel.

Mit Direct3D Feature Level 10.1 oder höher unterstützt die Hardware 4x MSAA. Direct3D Feature Level 11.0 oder höher Hardware unterstützt 4x und 8x MSAA. Alles sollte 2x MSAA unterstützen.

+0

Dies schien für die Kanten zu arbeiten, aber meine Textur ist immer noch leicht verzogen. Zum Beispiel ist eine einfache Ringtextur leicht verzerrt und Sie können eine Box darin sehen. Ich habe einen Screenshot, der das Quellbild mit dem vergleicht, was tatsächlich im Spiel wiedergegeben wird. https://www.dropbox.com/s/epkipy37o0b3yq7/comparison.png?dl=0 Könnte es ein anderes Problem geben? Dies geschieht nicht in Direct3D 9 oder anderswo. – user5901143

+0

Es sind viele Staaten in der Pipeline, also könnte es eine ganze Reihe von Gründen geben. Sie haben unterschiedliche Hintergründe in den beiden Bildern, so dass auch Unterschiede beim Mischen entstehen. Machst du irgendwelche [Texelverschiebung] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb205073.aspx#Mapping_Texels_to_Pixels_DX10) in deinen Shadern? –

+0

Für das Quellbild habe ich einen schwarzen Hintergrund mit Gimp hinzugefügt. Aber so soll es aussehen. Ich mache keine Verschiebung, mein Shader macht nur grundlegende Texturierung keine Effekte oder Modifikationen angewendet. – user5901143