2017-07-17 32 views
1

我使用directx在可視c#中渲染網格。打開消除鋸齒時,沿着網格邊緣出現下面的僞影(請參閱圖像)。工件僅在朝向相機的邊緣上顯示,並且它們顯示在我加載的每個網格上。我正在使用DirectX 9.0庫,問題僅出現在我的Windows 10桌面上。我也使用Windows XP桌面進行測試,網格顯示正確。此外,多重採樣的水平似乎並沒有影響問題(但是mutisampling當設置爲none問題消失)使用多采樣沿網格邊緣創建工件(DirectX,C#)

下面是參數初始化:

PresentParameters presentParameters = new PresentParameters(); 
presentParameters.BackBufferFormat = Format.Unknown; 
presentParameters.Windowed = true; 
presentParameters.SwapEffect = SwapEffect.Discard; 
presentParameters.AutoDepthStencilFormat = DepthFormat.D24X8; 
presentParameters.MultiSample = MultiSampleType.FourSamples; 
presentParameters.EnableAutoDepthStencil = true; 

我的任何意見表示感謝。

這裏是邊緣網:

mesh with the edges

回答

0

最新的Windows(8 +)中取得了重大的變化,以交換鏈和演示。較新的direct-x API甚至不授權多采樣交換鏈。

您可能會或可能不會在這裏做一些奇怪的事情,但很難在沒有更多細節的情況下進行診斷。我建議您不要創建多采樣交換鏈,而是定期創建多采樣交換鏈,分別創建多采樣表面(顏色+深度)並將顏色解析到後緩衝區。它應該解決你的問題。

+0

我對此很新,我很確定我是否正確。你建議我將一個後臺緩衝區複製到一個表面上,在它上面運行一些掩模(如roberts)來創建抗鋸齒效果並將其複製回到後臺緩衝區?還是有一些方法可以做到這一點? –

+0

不,沒關係,只需在交換鏈創建時關閉autodepth和多重採樣,爲您的渲染創建新的顏色和部分表面,然後從這些表面調用解析到您的後臺緩衝區。 – galop1n

+0

你是正確的,那應該解決從我讀過的有關它的問題,但我有問題找到如何在c#中使用曲面的例子,我從所有的嘗試/錯誤方法變得沮喪。如果你可以請給我寫一個在C#中的源代碼如何做到這一點,我會非常感激。因爲這是我工作項目的一部分,如果解決方案能夠正常工作,我甚至願意捐助20美元給您的貝寶。 –