IDXGIFactory2::CreateSwapChainForComposition メソッド (dxgi1_2.h)

Direct3D コンテンツを DirectComposition API、 Windows.UI.Xaml フレームワーク、または Windows UI ライブラリ (WinUI) XAML に送信してウィンドウで作成するために使用できるスワップ チェーンを作成します。

構文

HRESULT CreateSwapChainForComposition(
  [in]           IUnknown                    *pDevice,
  [in]           const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  [in, optional] IDXGIOutput                 *pRestrictToOutput,
  [out]          IDXGISwapChain1             **ppSwapChain
);

パラメーター

[in] pDevice

Direct3D 11 以前のバージョンの Direct3D の場合、これはスワップ チェーンの Direct3D デバイスへのポインターです。 Direct3D 12は、直接コマンド キューへのポインターです (ID3D12CommandQueue を参照)。 このパラメーターを NULL にすることはできません。 D3D_DRIVER_TYPE_REFERENCEなどのソフトウェア ドライバーは、コンポジション スワップ チェーンではサポートされていません。

[in] pDesc

スワップ チェーン記述の DXGI_SWAP_CHAIN_DESC1 構造体へのポインター。 このパラメーターを NULL にすることはできません。

CreateSwapChainForComposition では反転プレゼンテーション モデルのみがサポートされるため、DXGI_SWAP_CHAIN_DESC1SwapEffect メンバーでDXGI_SWAP_EFFECT_FLIP_SEQUENTIAL値を指定する必要があります。

また、 DXGI_SWAP_CHAIN_DESC1Scaling メンバーでDXGI_SCALING_STRETCH値を指定 する必要があります。

[in, optional] pRestrictToOutput

コンテンツを制限する出力の IDXGIOutput インターフェイスへのポインター。 また、IDXGISwapChain1::P resent1 呼び出しでDXGI_PRESENT_RESTRICT_TO_OUTPUT フラグを渡して、他の出力でコンテンツが強制的に黒く表示されるようにする必要があります。 コンテンツを別の出力に制限する場合は、新しいスワップ チェーンを作成する必要があります。 ただし、 DXGI_PRESENT_RESTRICT_TO_OUTPUT フラグに基づいてコンテンツを条件付きで制限することはできます。

コンテンツを出力ターゲットに制限しない場合は、このパラメーターを NULL に設定します。

[out] ppSwapChain

CreateSwapChainForComposition によって作成されるスワップ チェーンの IDXGISwapChain1 インターフェイスへのポインターを受け取る変数へのポインター。

戻り値

CreateSwapChainForComposition は次を返します。

  • スワップ チェーンが正常に作成された場合は、S_OKします。
  • 操作を完了するためにメモリが使用できない場合は、E_OUTOFMEMORYします。
  • び出し元のアプリケーションが無効なデータを提供した場合 ( pDesc または ppSwapChainNULL の場合など) にDXGI_ERROR_INVALID_CALLします。
  • pDevice に渡すデバイスの種類によって定義されている、DXGI_ERRORトピックで説明されているその他のエラー コードが考えられます。

Windows 7 のプラットフォーム更新プログラム: Windows 7 用プラットフォーム更新プログラム がインストールされている Windows 7 または Windows Server 2008 R2 では、 CreateSwapChainForComposition はE_NOTIMPLで失敗します。 Windows 7 のプラットフォーム更新プログラムの詳細については、「Windows 7 用プラットフォーム更新プログラム」を参照してください。

注釈

コンポジション スワップ チェーンは、次のいずれかを使用して使用できます。

DirectComposition の場合は、 IDCompositionVisual::SetContent メソッドを呼び出して、スワップ チェーンを ビジュアル オブジェクトのコンテンツとして設定できます。これにより、スワップ チェーンをビジュアル ツリーにバインドできます。 XAML の場合、 SwapChainBackgroundPanel クラスは従来の COM インターフェイス ISwapChainBackgroundPanelNative を公開します。 ISwapChainBackgroundPanelNative::SetSwapChain メソッドを使用して、XAML UI グラフにバインドできます。 XAML の SwapChainBackgroundPanel クラスでコンポジション スワップ チェーンを使用する方法については、「 DirectX と XAML 相互運用」を参照してください。

IDXGISwapChain::SetFullscreenStateIDXGISwapChain::ResizeTargetIDXGISwapChain::GetContainingOutputIDXGISwapChain1::GetHwndおよび IDXGISwapChain::GetCoreWindow メソッドは、この種類のスワップ チェーンでは無効です。 この種類のスワップ チェーンでこれらのメソッドのいずれかを呼び出すと、失敗します。

スワップ チェーンのバック バッファーの形式を選択する方法については、「 色空間のデータの変換」を参照してください。

CreateSwapChainForComposition の使用方法を示すコード例については、「SwapChainPanel とゲーム」を参照してください。

  • WinRT XAML の場合、 ISwapChainPanelNative インターフェイスと ISwapChainBackgroundPanelNative インターフェイスは ヘッダーで windows.ui.xaml.media.dxinterop.h 宣言されます。
  • Windows UI ライブラリ (WinUI) XAML の場合、ISwapChainPanelNative インターフェイスと ISwapChainBackgroundPanelNative インターフェイスは ヘッダーでmicrosoft.ui.xaml.media.dxinterop.h宣言されます。

要件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2 のWindows Server 2012とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー dxgi1_2.h
Library Dxgi.lib

こちらもご覧ください