ISwapChainPanelNative2::SetSwapChainHandle 메서드(windows.ui.xaml.media.dxinterop.h)
스왑 체인에 대한 핸들을 사용하여 SwapChainPanel 에 대한 DirectX 스왑 체인을 설정합니다.
구문
HRESULT SetSwapChainHandle(
[in] HANDLE swapChainHandle
);
매개 변수
[in] swapChainHandle
스왑 체인에 대한 공유 핸들입니다.
반환 값
메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
SetSwapChain(HANDLE swapChainHandle)을 사용하면 스왑 체인에 대한 공유 핸들을 참조하여 스왑 체인을 렌더링할 수 있습니다.
이렇게 하면 한 프로세스에서 스왑 체인이 만들어지고 다른 프로세스로 전달되어야 하는 시나리오가 가능합니다.
XAML은 DXGI 스왑 체인을 SwapChainPanel 요소의 콘텐츠로 설정하는 것을 지원합니다. 앱은 SwapChainPanel instance ISwapChainPanelNative 인터페이스를 쿼리하고 SetSwapChain(IDXGISwapChain *swapChain)을 호출하여 이를 수행합니다.
이 프로세스는 프로세스 스왑 체인에서 에 대한 포인터에 대해 작동합니다. 그러나 포그라운드 프로세스가 일시 중단되거나 종료될 때 백그라운드 프로세스에서 연속 호출을 사용하도록 설정하는 2개 프로세스 모델을 사용하는 VoIP 앱에서는 작동하지 않습니다. 이 두 프로세스 구현에서는 포그라운드 앱의 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 |