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

Confira também

Enumerações DXGI

DXGI_SWAP_CHAIN_DESC1