Metode ISwapChainPanelNative2::SetSwapChainHandle (windows.ui.xaml.media.dxinterop.h)
Mengatur rantai pertukaran DirectX untuk SwapChainPanel menggunakan handel ke rantai pertukaran.
Sintaks
HRESULT SetSwapChainHandle(
[in] HANDLE swapChainHandle
);
Parameter
[in] swapChainHandle
Handel bersama ke rantai pertukaran.
Nilai kembali
Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
SetSwapChain(HANDLE swapChainHandle) memungkinkan rantai pertukaran dirender dengan mereferensikan handel bersama ke rantai pertukaran.
Ini memungkinkan skenario di mana rantai pertukaran dibuat dalam satu proses dan perlu diteruskan ke proses lain.
XAML mendukung pengaturan rantai pertukaran DXGI sebagai konten elemen SwapChainPanel. Aplikasi menyelesaikan ini dengan mengkueri antarmuka ISwapChainPanelNative dari instans SwapChainPanel dan memanggil SetSwapChain (IDXGISwapChain *swapChain).
Proses ini berfungsi untuk pointer ke dalam rantai pertukaran proses. Namun, ini tidak berfungsi untuk aplikasi VoIP, yang menggunakan model dua proses untuk memungkinkan panggilan berkelanjutan pada proses latar belakang ketika proses latar depan ditangguhkan atau dimatikan. Implementasi dua proses ini membutuhkan kemampuan untuk meneruskan handel bersama ke rantai pertukaran, bukan penunjuk, yang dibuat pada proses latar belakang ke proses latar depan untuk dirender dalam XAML SwapChainPanel di aplikasi latar depan.
<!-- 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);
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8.1 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 R2 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | windows.ui.xaml.media.dxinterop.h |
DLL | Windows.UI.Xaml.dll |