Win32 API 日本語リファレンス
ホームGraphics.Dxgi › IDXGIOutput5

IDXGIOutput5

COM
IID80a07424-ab52-42eb-833c-0c42fd282d98継承元IDXGIOutput4自前メソッド開始 vtbl26

公式ドキュメント

アダプター出力(モニターなど)を表します。IDXGIOutput5 インターフェイスは、全画面サーフェスでサポートされるフォーマットの一覧を指定するための単一のメソッドを公開します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 26 HRESULT DuplicateOutput1(IUnknown* pDevice, DWORD Flags, DWORD SupportedFormatsCount, DXGI_FORMAT* pSupportedFormats, IDXGIOutputDuplication** ppOutputDuplication)

IDXGIOutputDuplication オブジェクトが返すことのできる全画面サーフェスについて、サポートされるフォーマットの一覧を指定できるようにします。

pDeviceIUnknown*inデスクトップ画像の処理に使用できる Direct3D デバイスインターフェイスへのポインター。このデバイスは、出力が接続されているアダプターから作成されている必要があります。
FlagsDWORDin作成するキャプチャサーフェスの種類を記述する DXGI_OUTDUPL_FLAG 列挙値のビットフィールド。
SupportedFormatsCountDWORDinサポートされるフォーマットの数を指定します。
pSupportedFormatsDXGI_FORMAT*inSupportedFormatsCount の長さを持つ DXGI_FORMAT エントリの配列を指定します。
ppOutputDuplicationIDXGIOutputDuplication**out新しい IDXGIOutputDuplication インターフェイスを受け取る変数へのポインター。

戻り値

Type: HRESULT

解説(Remarks)

このメソッドを使用すると、実行中の全画面アプリケーションが使用している元のバックバッファーフォーマットを直接受け取ることができます。これに対して、元の DuplicateOutput 関数を使用した場合は、全画面サーフェスが常に 32 ビット BGRA フォーマットに変換されます。現在の全画面アプリケーションが別のバッファーフォーマットを使用している場合、32 ビット BGRA への変換によりパフォーマンスが低下します。DuplicateOutput1 を使用すると、フォーマット変換を省略できるというパフォーマンス上の利点に加え、高色数フォーマット(R10G10B10A2 など)が表示されている場合に、すべての色域を受け取ることもできます。

pSupportedFormats 配列には、ディスプレイのスキャンアウトフォーマットのみを含める必要があります。各フィーチャレベルで必要とされるスキャンアウトフォーマットについては、Direct3D フィーチャレベル 11.0 ハードウェアのフォーマットサポートを参照してください。現在の全画面バッファーフォーマットが pSupportedFormats 配列に含まれていない場合、DXGI は指定されたフォーマットのいずれかを選び、IDXGIOutputDuplication::AcquireNextFrame から戻る前に全画面バッファーをそのフォーマットに変換します。サポートされるフォーマットの一覧には、常に DXGI_FORMAT_B8G8R8A8_UNORM を含める必要があります。これはデスクトップで最も一般的なフォーマットだからです。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDXGIOutput5 "{80A07424-AB52-42EB-833C-0C42FD282D98}"
#usecom global IDXGIOutput5 IID_IDXGIOutput5 "{}"
#comfunc global IDXGIOutput5_DuplicateOutput1  26 sptr,int,int,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。