DXGI_SCALING 열거형(dxgi1_2.h)
백 버퍼 크기가 대상 출력의 크기와 일치하지 않는 경우 크기 조정 동작을 식별합니다.
Syntax
typedef enum DXGI_SCALING {
DXGI_SCALING_STRETCH = 0,
DXGI_SCALING_NONE = 1,
DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;
상수
DXGI_SCALING_STRETCH 값: 0 DXGI에 프레젠테이션 대상 크기에 맞게 백 버퍼 콘텐츠의 크기를 조정하도록 지시합니다. IDXGIFactory::CreateSwapChain 메서드를 호출할 때 DXGI의 암시적 동작입니다. |
DXGI_SCALING_NONE 값: 1 프레젠테이션 대상 크기가 백 버퍼 크기와 같지 않을 때 크기 조정 없이 백 버퍼 콘텐츠를 표시하도록 DXGI에 지시합니다. 백 버퍼와 프레젠테이션 대상의 위쪽 가장자리가 함께 정렬됩니다. WS_EX_LAYOUTRTL 스타일이 HWND 핸들과 대상 출력 창에 연결된 경우 백 버퍼와 프레젠테이션 대상의 오른쪽 가장자리가 함께 정렬됩니다. 그렇지 않으면 왼쪽 가장자리가 함께 정렬됩니다. 백 버퍼 외부의 모든 대상 영역은 창 배경색으로 채워집니다. 이 값은 스왑 체인의 백 버퍼 외부에 있는 모든 대상 영역이 IDXGISwapChain1::SetBackgroundColor 호출에서 지정한 배경색으로 채워지도록 지정합니다. |
DXGI_SCALING_ASPECT_RATIO_STRETCH 값: 2 백 버퍼의 가로 세로 비율을 유지하면서 프레젠테이션 대상 크기에 맞게 백 버퍼 콘텐츠의 크기를 조정하도록 DXGI에 지시합니다. 크기가 조정된 백 버퍼가 프레젠테이션 영역을 채우지 않으면 검은색 테두리 가운데에 배치됩니다. 이 상수는 Windows Phone 8 및 Windows 10 지원됩니다. 레거시 Win32 창 스왑 체인에서는 DXGI_SCALING_STRETCH 동일하게 작동합니다. |
설명
DXGI_SCALING_NONE 값은 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 또는DXGI_SWAP_EFFECT_FLIP_DISCARD 값으로 만든 대칭 이동 프레젠테이션 모델 스왑 체인에 대해서만 지원됩니다. IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow 또는 IDXGIFactory2::CreateSwapChainForComposition에 대한 호출에서 이러한 값을 전달합니다.
DXGI_SCALING_ASPECT_RATIO_STRETCH 가로 채우기를 사용하는 것을 선호합니다. 그렇지 않으면 다음 논리를 사용하여 세로 채우기를 사용합니다.
float aspectRatio = backBufferWidth / float(backBufferHeight);
// Horizontal fill
float scaledWidth = outputWidth;
float scaledHeight = outputWidth / aspectRatio;
if (scaledHeight >= outputHeight)
{
// Do vertical fill
scaledWidth = outputHeight * aspectRatio;
scaledHeight = outputHeight;
}
float offsetX = (outputWidth - scaledWidth) * 0.5f;
float offsetY = (outputHeight - scaledHeight) * 0.5f;
rect.left = static_cast<LONG>(offsetX);
rect.top = static_cast<LONG>(offsetY);
rect.right = static_cast<LONG>(offsetX + scaledWidth);
rect.bottom = static_cast<LONG>(offsetY + scaledHeight);
rect.left = std::max<LONG>(0, rect.left);
rect.top = std::max<LONG>(0, rect.top);
rect.right = std::min<LONG>(static_cast<LONG>(outputWidth), rect.right);
rect.bottom = std::min<LONG>(static_cast<LONG>(outputHeight), rect.bottom);
outputWidth 및 outputHeight는 프레젠테이션 대상 크기의 픽셀 크기입니다. CoreWindow의 경우 창의 DPI 속성을 사용하여 logicalWidth 및 logicalHeight 값을 DIPS에서 픽셀로 변환해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
머리글 | dxgi1_2.h |