我有一些D3D11過程中,我掛鉤捕捉幀。如果進程調用Present()
,有捕捉框架沒有問題,但... 在某些情況下,它是不可見的和不存在()方法被調用,但幀渲染真的。我可以連接Draw()
,ExecudeCommandList()
(和其他)方法。實際上,沒有Present()調用,所以我無法訪問SwapChain的backbuffer。我想在應用程序運行w/o窗口時沒有創建SwapChain。鉤到D3D11過程沒有現在和搶的Texture2D
當我掛鉤Draw()
或ExecuteCommandList()
時,我只能訪問D3D11Device
和D3D11DeviceContext
。
使用API監控我抓獲D3D11的一些信息要求在每一幀的末尾:
沒有人有任何想法,我怎樣才能得到的框架?我的目的是讓框架進入D3D11Texture2D。
謝謝!
UPD:
我發現,這種方法可以對我有所幫助:ID3D11DeviceContext::ResolveSubresource
,但我不能處理它鉤。這是攤銷(在主應用程序,我試圖抓住幀)。
虛函數表日誌的部分:
[56] 5E225520 (CContext::TID3D11DeviceContext_GetResourceMinLOD_<1>)
[57] 5E1B95C0 (CContext::TID3D11DeviceContext_ResolveSubresource_Amortized<1>)
[58] 5E21DEC0 (CContext::TID3D11DeviceContext_ExecuteCommandList_<1>)
謝謝2!
好像你正試圖鉤使用DirectComposition的應用程序:https://msdn.microsoft.com/en-us/library/windows/desktop/hh437371%28v=vs.85%29.aspx?f = 255&MSPPError = -2147217396。您是否試圖連接到Internet Explorer? DirectComposition不會發出Present calls。據我所知,它直接發送(共享)紋理到DWM。您可能需要掛鉤DirectComposition或CreateTexture調用,並試圖以何種方式捕獲紋理內容。 – VuVirt
不,這是使用簡單渲染轉換的d3d11應用程序。如果輸出窗口沒有顯示,這個應用程序會停止調用'Present'。這是3D遊戲中間件。 我試圖掛鉤'CreateTexure2D',但最好的選擇是'ResolveSubresource'。我無法掛鉤它,因爲它在主應用程序中是** amortized **。 –