2016-10-24 10 views
4

私はあまりにも使用しようとしていますDirectX desktop duplication APIDirectX11デスクトップの複製がNVIDIAで動作しない

Iは

http://www.codeproject.com/Tips/1116253/Desktop-Screen-Capture-on-Windows-via-Windows-Desk

からexmaplesを実行しようとした

https://code.msdn.microsoft.com/windowsdesktop/Desktop-Duplication-Sample-da4c696a

からこれらの両方がDXGIを使用して画面キャプチャの例です。

私はNVIDIA GeForce GTX 1060Windows 10 Proをマシンに持っています。プロセッサーはIntel™ Core i7-6700HQです。

NVIDIA Control Panel > 3D SettingsAuto select processorに選択されている場合、これらの例は完全に正常に機能します。

ただし、手動で設定をNVIDIA Graphics Cardに設定すると、サンプルが機能しなくなります。

エラーは次の行で発生します。 hr(HRESULT)

//IDXGIOutput1* DxgiOutput1 
hr = DxgiOutput1->DuplicateOutput(m_Device, &m_DeskDupl); 

エラーがDXGI_ERROR_UNSUPPORTED 0x887A0004

である私は、DirectXに新たなんだと私ははNVIDIAでサポートされていないのDirectXデスクトップ重複あり、ここでの問題を知りませんか?

この場合、プログラムの開始時に特定のプロセッサを選択して、プログラムを任意の設定で実行できる方法がありますか?

#Edit

私はここでのスクリーンショットを投稿議論 https://www.codeproject.com/Tips/1116253/Desktop-Screen-Capture-on-Windows-via-Windows-Desk?msg=5319978#xx5319978xx

へのリンクですcodeproject.com

上の第2のサンプルプロジェクトの開発(エフゲニーPereguda)を尋ね周りを探した後、元のリンクがダウンした場合のcodeproject.comに関するディスカッション

discussion with Evgeny Pereguda

私はまた、明確にそれがチケットからマイクロソフトのサポートサイトhttps://support.microsoft.com/en-us/help/3019314/error-generated-when-desktop-duplication-api-capable-application-is-ru

引用

、この問題が発生した時にチケットをサポートするために、参照デスクトップ複製APIで行うことができなかったことを示唆しanswer on stackoverflowを見つけましたDDAはMicrosoftハイブリッドシステム上の個別のGPU に対して実行されることをサポートしていないためです。設計上、このような シナリオでは、 コールはエラーコードDXGI_ERROR_UNSUPPORTEDと一緒に失敗します。

私のマシン上の両方のモード(統合グラフィックスとディスクリート)でウィンドウをデスクトップに効率的に複製するアプリケーションがいくつかあります。 (https://www.youtube.com/watch?v=bjE6qXd6Itw

は、私は私のマシンでVirtual Desktopのインストールフォルダの中に見ていると関心のDLLs次のように表示することができます

SharpDX.D3DCompiler.dll 
SharpDX.Direct2D1.dll 
SharpDX.Direct3D10.dll 
SharpDX.Direct3D11.dll 
SharpDX.Direct3D9.dll 
SharpDX.dll 
SharpDX.DXGI.dll 
SharpDX.Mathematics.dll 

その、このアプリケーションがあり、デスクトップを複製するDXGIを使用して、またはされていることをおそらく表示アプリケーションが起動する前に特定のプロセッサを選択できるかどうかを判断します。

いずれにしても、両方のモードでデスクトップを複製する効率的な方法はありますか?

答えて

1

可能性の高い原因はError generated when Desktop Duplication API-capable application is run against discrete GPUで説明したデスクトップ複製APIのための特定の内部の制限、次のとおりです。

...アプリケーションは、アプリケーション、マイクロソフトのハイブリッドシステム上の離散GPUに対して、デスクトップ画像を複製しようとすると正しく動作しない場合や、次のいずれかのエラーを生成することがあります。IDXGIOutput1 :: DuplicateOutput失敗:

  • は0x80070005と
  • CDesktopCaptureDWMでswapchainウィンドウの作成に失敗しました。編:回避するには

    :0x887a0004

記事は、(それがプログラムですべてで達成可能であるかどうかについて、より具体的な詳細なしで)異なるGPUを使用することを除いて、他の回避策を示唆していませんこの問題は、Microsoft Hybridシステム上の個別のGPUではなく、統合されたGPUでアプリケーションを実行してください。

+1

私はこのプロジェクトを中止しましたが、このトピックについての議論は他の人に役立つかもしれません。私が思い出すことのできるところからは、Unityの(ゲームエンジン)ネイティブプログラミング機能を実行して、3D空間でデスクトップスクリーンショットを取得して、VRアプリケーションで最終的に見えるようにしていました。私は個別のグラフィックスをオンにしていたのはおそらく、UnityがGPUでうまく機能し、統合モードでBSODを取得していたので、私の製造元は同じことを勧めました。私はまた、質問自体に投稿するいくつかの他のものを発見した。 – 11thdimension

関連する問題