D3D11プロセスがあります。フレームをキャプチャするためにフックしています。プロセスがPresent()
を呼び出す場合、フレームをキャプチャするのに問題はありませんが、 場合によっては可視ウィンドウがなく、Present()メソッドは呼び出されませんが、フレームは実際にレンダリングされます。私はDraw()
、ExecudeCommandList()
(と他の)メソッドを接続することができます。実際には、私はSwapChainのバックバッファへのアクセス権がないので、呼び出されるPresent()はありません。私はスワップチェーンは、アプリケーションがウィンウィンドウを実行しているときに作成されていないと仮定します。現在のD3D11プロセスにフックし、Texture2Dを取得
Draw()
またはExecuteCommandList()
をフックすると、D3D11Device
とD3D11DeviceContext
にしかアクセスできません。
私はD3D11のいくつかの情報をキャプチャAPIモニタを使用して、各フレームの最後で呼び出します。
誰もが、私は結果のフレームを取得することができますどのように任意のアイデアを持っていますか?私の目的は、フレームを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は現在の呼び出しを発行しません。私が理解する限り、テクスチャを直接DWMに送信(共有)します。 DirectCompositionやCreateTextureの呼び出しをフックして、いつテクスチャの内容をキャプチャするかを推測する必要があります。 – VuVirt
いいえ、簡単なレンダリング変換を持つd3d11アプリです。出力ウィンドウが表示されていない場合、このアプリケーションは 'Present'の呼び出しを停止します。それは3Dゲームのミドルウェアです。 'CreateTexure2D'をフックしようとしましたが、最良の選択は' ResolveSubresource'です。メインアプリで**償却**されているので、私はそれをフックすることはできません。 –