ISwapChainPanelNative2::SetSwapChainHandle メソッド (windows.ui.xaml.media.dxinterop.h)
スワップ チェーンへのハンドルを使用して 、SwapChainPanel の DirectX スワップ チェーンを設定します。
構文
HRESULT SetSwapChainHandle(
[in] HANDLE swapChainHandle
);
パラメーター
[in] swapChainHandle
スワップ チェーンへの共有ハンドル。
戻り値
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
注釈
SetSwapChain(HANDLE swapChainHandle) を使用すると、スワップ チェーンへの共有ハンドルを参照してスワップ チェーンをレンダリングできます。
これにより、あるプロセスでスワップ チェーンが作成され、別のプロセスに渡す必要があるシナリオが可能になります。
XAML では、SWAPChainPanel 要素のコンテンツとしての DXGI スワップ チェーンの設定がサポートされています。 これを実現するには、 SwapChainPanel インスタンスから ISwapChainPanelNative インターフェイスに対してクエリを実行し、 SetSwapChain(IDXGISwapChain *swapChain) を呼び出します。
このプロセスは、プロセス スワップ チェーン内の へのポインターに対して機能します。 ただし、フォアグラウンド プロセスが中断またはシャットダウンされたときにバックグラウンド プロセスで呼び出しを継続できるようにする 2 プロセス モデルを使用する VoIP アプリでは、これは機能しません。 この 2 プロセス実装では、バックグラウンド プロセスで作成されたポインターではなく、共有ハンドルをスワップ チェーンに渡し、フォアグラウンド アプリの XAML SwapChainPanel でレンダリングする前景プロセスに渡す必要があります。
<!-- XAML markup -->
<Page>
<SwapChainPanel x:Name=”captureStreamDisplayPanel” />
</Page>
// Definitions
ComPtr<IDXGISwapChain1> m_swapChain;
HANDLE m_swapChainHandle;
ComPtr<ID3D11Device> m_d3dDevice;
ComPtr<IDXGIAdapter> dxgiAdapter;
ComPtr<IDXGIFactory2> dxgiFactory;
ComPtr<IDXGIFactoryMedia> dxgiFactoryMedia;
ComPtr<IDXGIDevice> dxgiDevice;
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0};
// Get DXGI factory (assume standard boilerplate has created D3D11Device)
m_d3dDevice.As(&dxgiDevice);
dxgiDevice->GetAdapter(&dxgiAdapter);
dxgiAdapter->GetParent(__uuidof(IDXGIFactory2), &dxgiFactory);
// Create swap chain and get handle
DCompositionCreateSurfaceHandle(GENERIC_ALL, nullptr, &m_swapChainHandle);
dxgiFactory.As(&dxgiFactoryMedia);
dxgiFactoryMedia->CreateSwapChainForCompositionSurfaceHandle(
m_d3dDevice.Get(),
m_swapChainHandle,
&swapChainDesc,
nullptr,
&m_swapChain
);
// Set swap chain to display in a SwapChainPanel
ComPtr<ISwapChainPanelNative2> panelNative;
reinterpret_cast<IUnknown*>(captureStreamDisplayPanel)->QueryInterface(IID_PPV_ARGS(&panelNative)));
panelNative->SetSwapChainHandle(m_swapChainHandle);
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 R2 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | windows.ui.xaml.media.dxinterop.h |
[DLL] | Windows.UI.Xaml.dll |