enumeração DXGI_SCALING (dxgi1_2.h)
Identifica o comportamento de redimensionamento quando o tamanho do buffer traseiro não corresponde ao tamanho da saída de destino.
Syntax
typedef enum DXGI_SCALING {
DXGI_SCALING_STRETCH = 0,
DXGI_SCALING_NONE = 1,
DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;
Constantes
DXGI_SCALING_STRETCH Valor: 0 Direciona o DXGI para que o conteúdo do buffer traseiro seja dimensionado para se ajustar ao tamanho de destino da apresentação. Esse é o comportamento implícito de DXGI quando você chama o método IDXGIFactory::CreateSwapChain . |
DXGI_SCALING_NONE Valor: 1 Direciona o DXGI para que o conteúdo do buffer traseiro apareça sem nenhuma escala quando o tamanho de destino da apresentação não for igual ao tamanho do buffer de fundo. As bordas superiores do buffer traseiro e do destino da apresentação são alinhadas. Se o estilo WS_EX_LAYOUTRTL estiver associado ao identificador HWND à janela de saída de destino, as bordas direitas do buffer traseiro e do destino da apresentação serão alinhadas; caso contrário, as bordas esquerdas são alinhadas. Toda a área de destino fora do buffer traseiro é preenchida com a cor da tela de fundo da janela. Esse valor especifica que todas as áreas de destino fora do buffer traseiro de uma cadeia de troca são preenchidas com a cor da tela de fundo especificada em uma chamada para IDXGISwapChain1::SetBackgroundColor. |
DXGI_SCALING_ASPECT_RATIO_STRETCH Valor: 2 Direciona o DXGI para que o conteúdo do buffer traseiro seja dimensionado para se ajustar ao tamanho de destino da apresentação, preservando a taxa de proporção do buffer traseiro. Se o buffer traseiro dimensionado não preencher a área de apresentação, ele será centralizado com bordas pretas. Essa constante tem suporte no Windows Phone 8 e Windows 10. Observe que, com os swapchains de janela win32 herdados, isso funciona da mesma forma que DXGI_SCALING_STRETCH. |
Comentários
O valor DXGI_SCALING_NONE tem suporte apenas para cadeias de troca de modelo de apresentação flip criadas com o valor DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ou DXGI_SWAP_EFFECT_FLIP_DISCARD . Você passa esses valores em uma chamada para IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow ou IDXGIFactory2::CreateSwapChainForComposition.
DXGI_SCALING_ASPECT_RATIO_STRETCH preferir usar um preenchimento horizontal, caso contrário, usará um preenchimento vertical usando a lógica a seguir.
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);
Observe que outputWidth e outputHeight são os tamanhos de pixel do tamanho de destino da apresentação. No caso do CoreWindow, isso requer a conversão dos valores logicalWidth e logicalHeight de DIPS para pixels usando a propriedade DPI da janela.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 e Atualização de Plataforma para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Cabeçalho | dxgi1_2.h |