Поделиться через


Перечисление 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

См. также раздел

Перечисления DXGI

DXGI_SWAP_CHAIN_DESC1