DX11後備緩衝根據這一毫秒的博客文章 http://blogs.msdn.com/b/nativeconcurrency/archive/2012/07/02/interop-with-direct3d-textures-in-c-amp.aspx寫從C++ AMP
您可以直接寫在C++ AMP後備緩衝。
使用Interop,您可以使用IDXGISwapChain獲取與窗口關聯的後臺緩衝區的紋理對象,並直接在C++ AMP內核中更新它。
我創建從DX設備的放大器設備描述符,我得到了一個指針後備緩衝區,然後試圖從它使功放的質感,但我發現,紋理描述符bindFlags後備緩衝區,只D3D11_BIND_RENDER_TARGET和我需要至少D3D11_BIND_UNORDERED_ACCESS或D3D11_BIND_SHADER_RESOURCE爲了Concurrency :: graphics :: direct3d :: make_texture發揮作用。
我可以很容易地做出任何其他D3D紋理,並將其連接到放大器,如果我設置bindflags,但對於設置在backbuffer上的標誌,我無法連接它們。
它具有以下由微軟社區貢獻者
我想寫直接備份交換鏈的緩衝標記的答案。據我所知,這是無法完成的,因爲創建後臺緩衝區紋理時可以使用的使用標誌與C++ AMP操作紋理所需的使用標誌不兼容。
因此,一方面,它(從C++ AMP寫入backbuffer)是一個互操作的例子,另一方面它被解釋爲不可能...?
我目前的要求只是在C++ AMP中生成光線跟蹤圖像,並且顯示在d3d顯示器上每幀沒有從圖形卡複製數據。我意識到我可以生成我自己的紋理,然後渲染一個四邊形,但直接寫入後緩衝器會更簡單,如果可以完成,那就是我想要做的。
也許這裏有人可以解釋它是否可以完成,需要採取哪些步驟來完成這個任務,或者可以解釋說不,這是不可能完成的。
在此先感謝您對此主題的任何幫助。
[編輯] 我現在發現這個信息 https://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics
//此資格後緩衝區爲是計算着色器的目標寫入 sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_SHADER_INPUT;
其實我嘗試以前,但調用CreateSwapChainForCoreWindow失敗 第一次機會異常在0x75251D4D在TestDxAmp.exe:微軟C++異常:平臺:: InvalidArgumentException ^內存位置0x0328E484。 HRESULT:0x80070057參數不正確。
這不是非常有用的信息。
編輯原帖 – JoeTaicoon 2014-09-26 07:32:14