Перечисление DXGI_SCALING (dxgi1_2.h)
Определяет поведение изменения размера, если размер буфера задней части не соответствует размеру целевого выходных данных.
Синтаксис
typedef enum DXGI_SCALING {
DXGI_SCALING_STRETCH = 0,
DXGI_SCALING_NONE = 1,
DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;
Константы
DXGI_SCALING_STRETCH Значение: 0 Предписывает DXGI масштабировать содержимое обратного буфера в соответствии с целевым размером презентации. Это неявное поведение DXGI при вызове метода IDXGIFactory::CreateSwapChain . |
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 для этого требуется преобразовать значения logicalWidth и logicalHeight из DIPS в пиксели с помощью свойства DPI окна.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Верхняя часть | dxgi1_2.h |