2012-11-05 55 views
3

我試圖使用D3DImage DX11得到MSAA,但看來,這是不可能的,因爲共享多重採樣紋理是不允許的,因爲說這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/ff476531(v=vs.85).aspx多重採樣(MSAA)進行的DirectX11/DirectX10的與D3DImage共享資源

其實,我使用D3Dmage的SharpDX實現,它可以在DX11和DX10上正常工作,只要不離開反鋸齒就可以離開。

解決這個問題的方法在這個線程中描述:http://sharpdx.org/forum/5-api-usage/1000-d3d11-problem-with-usage-of-texture2d哪些不成功。另外還有一種線程問類似的問題:Multisampling and Direct3D10/D3DImage interop

最後,問題是在事實上,如果任何人都可以證實,這是definitly不可能使用D3DImage爲從DX10/DX11抗鋸齒內容呈現?

回答

5

正如微軟鏈接(試了幾次也一樣)說,多次採樣共享紋理不允許的(其實質感還必須有沒有MIP級別(S),作爲附加信息)

分享的唯一途徑質地是創建一個非多重採樣的版本(相同的格式/參數),然後用

DeviceContext.ResolveSubresource 

在SharpDX的MSAA紋理轉化成非多重採樣的一個,那麼你就可以分享的結果。

+0

謝謝。好吧,但問題是,它是否允許我在DX11中使用MSAA渲染?我使用SampleDescription創建了一個Texture2D(4,16),並使用DeviceContext.ResolveSubresource將其複製,並將非MS副本附加到D3DImage,從而嘗試了您的建議解決方案。但是它不能幫助我在DX11中獲得反鋸齒輸出...... – DerPrzem

+0

因此,您創建MSAA紋理(具有關聯的渲染目標),渲染爲MSAA渲染目標,將MSAA紋理解析爲非多重採樣,並且結果不反鋸齒? – catflier

+1

是的,它的確如此。我發現錯誤 - 我沒有設置深度緩衝區與顏色緩衝區相同的SampleDescription。現在它呈現MSAA!感謝您的幫助。 – DerPrzem