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_DESC1 SwapEffect 멤버에서 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL값을 지정해야 합니다.
또한 DXGI_SWAP_CHAIN_DESC1크기 조정 멤버에서 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 또는 ppSwapChain 이 NULL인 경우) 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 인터페이스
- 시스템 XAML의 SwapChainPanel 또는 SwapChainBackgroundPanel 클래스.
- Windows UI 라이브러리(WinUI) 3 XAML의 SwapChainPanel 또는 SwapChainBackgroundPanel 클래스.
DirectComposition의 경우 IDCompositionVisual::SetContent 메서드를 호출하여 스왑 체인을 시각적 개체의 콘텐츠로 설정한 다음 스왑 체인을 시각적 트리에 바인딩할 수 있습니다. XAML의 경우 SwapChainBackgroundPanel 클래스는 클래식 COM 인터페이스 ISwapChainBackgroundPanelNative을 노출합니다. ISwapChainBackgroundPanelNative::SetSwapChain 메서드를 사용하여 XAML UI 그래프에 바인딩할 수 있습니다. XAML의 SwapChainBackgroundPanel 클래스에서 컴퍼지션 스왑 체인을 사용하는 방법에 대한 자세한 내용은 DirectX 및 XAML interop을 참조하세요.
IDXGISwapChain::SetFullscreenState, IDXGISwapChain::ResizeTarget, IDXGISwapChain::GetContainingOutput, IDXGISwapChain1::GetHwnd 및 IDXGISwapChain::GetCoreWindow 메서드는 이 유형의 스왑 체인에서 유효하지 않습니다. 이러한 유형의 스왑 체인에서 이러한 메서드를 호출하면 실패합니다.
스왑 체인의 백 버퍼에 대한 형식을 선택하는 방법에 대한 자세한 내용은 색 공간에 대한 데이터 변환을 참조하세요.
예제
CreateSwapChainForComposition을 사용하는 방법을 보여 주는 코드 예제는 SwapChainPanel 및 게임을 참조하세요.
- WinRT XAML의 경우 ISwapChainPanelNative 및 ISwapChainBackgroundPanelNative 인터페이스가 헤더에
windows.ui.xaml.media.dxinterop.h
선언됩니다. - WinUI(Windows UI 라이브러리) 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 |
라이브러리 | Dxgi.lib |