enumerazione DXGI_SCALING (dxgi1_2.h)
Identifica il comportamento di ridimensionamento quando le dimensioni del buffer indietro non corrispondono alle dimensioni dell'output di destinazione.
Sintassi
typedef enum DXGI_SCALING {
DXGI_SCALING_STRETCH = 0,
DXGI_SCALING_NONE = 1,
DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;
Costanti
DXGI_SCALING_STRETCH Valore: 0 Indirizza DXGI per rendere la scala del contenuto del buffer back-buffer in base alle dimensioni della destinazione della presentazione. Si tratta del comportamento implicito di DXGI quando si chiama il metodo IDXGIFactory::CreateSwapChain . |
DXGI_SCALING_NONE Valore: 1 Indirizza DXGI per rendere visualizzato il contenuto del buffer back-buffer senza ridimensionamento quando le dimensioni della destinazione della presentazione non sono uguali alle dimensioni del buffer back-buffer. I bordi superiore del buffer indietro e la destinazione della presentazione vengono allineati insieme. Se lo stile WS_EX_LAYOUTRTL è associato all'handle HWND nella finestra di output di destinazione, i bordi destro del buffer indietro e la destinazione della presentazione vengono allineati insieme; in caso contrario, i bordi sinistro sono allineati insieme. Tutte le aree di destinazione all'esterno del buffer posteriore vengono riempite con colore di sfondo della finestra. Questo valore specifica che tutte le aree di destinazione all'esterno del buffer indietro di una catena di scambio vengono riempite con il colore di sfondo specificato in una chiamata a IDXGISwapChain1::SetBackgroundColor. |
DXGI_SCALING_ASPECT_RATIO_STRETCH Valore: 2 Indirizza DXGI per rendere la scala del contenuto del buffer back-buffer in base alle dimensioni della destinazione della presentazione, mantenendo al tempo stesso il rapporto di aspetto del buffer back-buffer. Se il buffer back con scalabilità orizzontale non riempie l'area di presentazione, verrà centrato con bordi neri. Questa costante è supportata in Windows Phone 8 e Windows 10. Si noti che con gli scambi di finestre Win32 legacy, questo funziona come DXGI_SCALING_STRETCH. |
Commenti
Il valore DXGI_SCALING_NONE è supportato solo per le catene di scambio di modelli di presentazione capovolte create con il valore DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL o DXGI_SWAP_EFFECT_FLIP_DISCARD . Questi valori vengono passati in una chiamata a IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow o IDXGIFactory2:: CreateSwapChainForComposition.
DXGI_SCALING_ASPECT_RATIO_STRETCH preferisce usare un riempimento orizzontale, altrimenti userà un riempimento verticale usando la logica seguente.
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);
Si noti che outputWidth e outputHeight sono le dimensioni dei pixel delle dimensioni della destinazione della presentazione. Nel caso di CoreWindow, è necessario convertire i valori logicWidth e logicHeight da DIPS a pixel usando la proprietà DPI della finestra.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP] |
Intestazione | dxgi1_2.h |