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 使后台缓冲区内容缩放以适应演示目标大小。 这是调用 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_SWAP_EFFECT_FLIP_SEQUENTIAL 或 DXGI_SWAP_EFFECT_FLIP_DISCARD 值创建的翻转演示文稿模型交换链才支持DXGI_SCALING_NONE值。 在调用 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 |