IDXGIOutput5::D uplicateOutput1 メソッド (dxgi1_5.h)
IDXGIOutputDuplication オブジェクトによって返される全画面表示サーフェスでサポートされている形式の一覧を指定できます。
構文
HRESULT DuplicateOutput1(
[in] IUnknown *pDevice,
UINT Flags,
[in] UINT SupportedFormatsCount,
[in] const DXGI_FORMAT *pSupportedFormats,
[out] IDXGIOutputDuplication **ppOutputDuplication
);
パラメーター
[in] pDevice
種類: IUnknown*
デスクトップ イメージの処理に使用できる Direct3D デバイス インターフェイスへのポインター。 このデバイスは、出力が接続されているアダプターから作成する必要があります。
Flags
型: UINT
作成するキャプチャ サーフェイスの種類 を 記述するDXGI_OUTDUPL_FLAG列挙値のビットフィールド。
[in] SupportedFormatsCount
型: UINT
サポートされている形式の数を指定します。
[in] pSupportedFormats
型: const DXGI_FORMAT*
DXGI_FORMATエントリの 長さ SupportedFormatsCount の配列 を 指定します。
[out] ppOutputDuplication
種類: IDXGIOutputDuplication**
新しい IDXGIOutputDuplication インターフェイスを受け取る変数へのポインター。
戻り値
型: HRESULT
- DuplicateOutput1 でデスクトップ重複インターフェイスが正常に作成された場合にS_OKします。
- 次のいずれかの理由でE_INVALIDARGします。
- 指定したデバイス (pDevice) が無効であるか、正しいアダプターで作成されなかったか、IDXGIFactory1 (または IDXGIFactory1 から継承する DXGI ファクトリ インターフェイスのそれ以降のバージョン) から作成されていません。
- 呼び出し元のアプリケーションでは、このデスクトップ出力が既に複製されています。
- アプリケーションが現在のデスクトップ イメージへのアクセス権を持っていない場合にE_ACCESSDENIEDします。 たとえば、セキュリティで保護されたデスクトップにアクセスできるのは、LOCAL_SYSTEMで実行されるアプリケーションだけです。
-
作成された IDXGIOutputDuplication インターフェイスが現在のデスクトップ モードまたはシナリオをサポートしていない場合にDXGI_ERROR_UNSUPPORTEDします。 たとえば、8bpp および DWM 以外のデスクトップ モードはサポートされていません。
DuplicateOutput1 がDXGI_ERROR_UNSUPPORTEDで失敗した場合、アプリケーションはデスクトップ スイッチとモードの変更に関するシステム通知を待機し、そのような通知が発生した後に DuplicateOutput1 をもう一度呼び出すことができます。 詳細については、デスクトップ スイッチ (EVENT_SYSTEM_DESKTOPSWITCH) とモード変更通知 (WM_DISPLAYCHANGE) に関するページを参照してください。
- DXGI が同時重複アプリケーションの最大数の制限に達した場合にDXGI_ERROR_NOT_CURRENTLY_AVAILABLEします (既定値は 4)。 したがって、呼び出し元のアプリケーションは、他のアプリケーションが閉じるまでデスクトップ重複インターフェイスを作成できません。
- セッションが現在切断されているため、 DuplicateOutput1 が失敗した場合にDXGI_ERROR_SESSION_DISCONNECTEDします。
- その他のエラー コードについては、 DXGI_ERROR トピックを参照してください。
注釈
このメソッドを使用すると、実行中の全画面表示アプリケーションで使用される元のバック バッファー形式を直接受け取ることができます。 比較のために、元の DuplicateOutput 関数を使用すると、常に全画面表示が 32 ビット BGRA 形式に変換されます。 現在の全画面表示アプリケーションで異なるバッファー形式が使用されている場合、32 ビット BGRA への変換ではパフォーマンスが低下します。 DuplicateOutput1 を使用すると、形式変換をスキップできるというパフォーマンス上の利点に加えて、高色の形式 (R10G10B10A2 など) が表示されている場合に、色の全色を受け取ることもできます。
pSupportedFormats 配列には、表示スキャンアウト形式のみを含める必要があります。 各機能レベルで必要なスキャンアウト形式については、「 Direct3D 機能レベル 11.0 ハードウェア のフォーマット サポート」を参照してください。 現在の全画面表示バッファー形式が pSupportedFormats 配列に 含まれていない場合、DXGI は IDXGIOutputDuplication::AcquireNextFrame から返す前に、指定された形式のいずれかを選択し、全画面表示バッファーをその形式に変換します。 デスクトップで最も一般的な形式であるため、サポートされている形式の一覧には常にDXGI_FORMAT_B8G8R8A8_UNORMが含まれている必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | dxgi1_5.h |
Library | Dxgi.lib |
[DLL] | Dxgi.dll |