問題タブ [dxgi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
directx - DXGI Waitable SwapChain が待機していない
フレームごとにバックバッファーのみをクリアする DX12 アプリケーションをセットアップします。
それは本当にベアボーンです:PSOもルートもありません...唯一の特殊性は、新しいフレームを開始する前に、Present()で行われるswapChainを待機することです(msdn waitable swap chain)(フレームレイテンシを1に設定しますまあ、2つのバッファしかありません)。
最初のフレームは正常に機能しますが、すぐに 2 番目のフレームの描画を開始します。もちろん、コマンド アロケーターは、コマンドがまだ GPU で実行されている間にリセットされていると不平を言います。
もちろん、新しいフレームに移動する前に GPU が完了するのを待つようにフェンスを設定することもできますが、これは待機可能なスワップ チェーン オブジェクトの仕事だと思いました。
レンダリング ルーチンは次のとおりです。
スワップチェーンから取得した待機可能なオブジェクトを使用して、このルーチンをループします。
そして、待機可能なフラグでスワップチェーンを初期化しました:
swapChain を作成した直後に SetFrameLatency を呼び出します。
それに伴う swapChain のサイズ変更:
私の質問は次のとおりです。何かを間違って設定していますか? それとも、これが待機可能なスワップ チェーンの仕組みですか (つまり、スワップ チェーンが利用可能になるのを待つ前に、gpu とフェンスを同期する必要もあります) ?
編集: SetFrameLatency 呼び出しの追加 + C++ カラーリング
c++ - UWP アプリケーションでフルスクリーン スワップ チェーン プレゼンテーションの待ち時間を短縮するにはどうすればよいですか?
DirectX11 UWP アプリケーションがあります。IDXGIFactory2::CreateSwapChainForCoreWindow
通常のパラメーターを使用してスワップ チェーンを作成します。
呼び出してフルスクリーン モードに変更しようとする::IDXGISwapChain::SetFullscreenState
と失敗しDXGI_ERROR_NOT_CURRENTLY_AVAILABLE
、次の診断が表示されます。
DXGI エラー: IDXGISwapChain::SetFullscreenState: コア ウィンドウ SwapChains は、永続的にウィンドウ化されていると見なされるため、フルスクリーンに移行できません。[ その他のエラー #163: ]
DXGI エラー: IDXGISwapChain::SetFullscreenState: 最新のアプリケーションでは、フルスクリーンは使用できません。すべてのスワップチェーンはウィンドウ化する必要があります。[ その他のエラー #206: ]
次を使用してフルスクリーンモードを切り替えることができることがわかりましたApplicationView
:
ただし、このメソッドはタスクバーを非表示にし、ウィンドウ フレームを非表示にし、ウィンドウを最大化するだけです。この場合、フリップ モデル プレゼンテーションを使用すると、通常のフルスクリーン スワップ チェーンの低レイテンシの利点を得ることができるはずですが、それは 2 つの機能ではないようで、スワップ チェーンは引き続き合成されます。コンポジット フリップは引き続きプレゼンテーションに使用され、プレゼンテーション ラグはウィンドウ モードと同じ ~30ms のままです。コンポジションを完全に無効にする必要がありますか、それともコンポジションによって適用される余分なレイテンシーを回避する他の方法がありますか?
c++ - 汚れた四角形を抽出する RGB ピクセル バッファ データ DirectX
Windows API からデスクトップ複製を使用しています。次のフレームにアクセスし、前のフレームから変更されたピクセルの四角形を取得するコードを次に示します。
ここにFrame_Data
構造があります
から変更されたピクセル バッファ データにアクセスすることは可能ですか?Data->Frame
データにアクセスするための私のコードは次のとおりです。
ご協力ありがとうございました!
c++ - カスタム出力解像度 DuplicateOutput DXGI
AcquireNextFrame
デスクトップのスクリーンショットを作成するために使用しています。セットアップで必要な出力画像の寸法を設定することは可能ですか? ドキュメントで、この機能IDXGIOutput::SetDisplaySurface
が役立つのを見ました。これが私のコードです:
私の画面は 1920x1080 で、たとえば 1280x720 で画像を取得したいと考えています。関数でエラーが発生しqueryinterface
ます。誰かが私が欠けているものを教えてもらえますか? または、解像度を簡単にカスタマイズするソリューションはありますか? ありがとう