énumération DXGI_SCALING (dxgi1_2.h)

Identifie le comportement de redimensionnement lorsque la taille de la mémoire tampon d’arrière-mémoire ne correspond pas à la taille de la sortie cible.

Syntax

typedef enum DXGI_SCALING {
  DXGI_SCALING_STRETCH = 0,
  DXGI_SCALING_NONE = 1,
  DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;

Constantes

 
DXGI_SCALING_STRETCH
Valeur : 0
Indique à DXGI de mettre à l’échelle le contenu de la mémoire tampon d’arrière-mémoire pour qu’il corresponde à la taille cible de présentation. Il s’agit du comportement implicite de DXGI lorsque vous appelez la méthode IDXGIFactory ::CreateSwapChain .
DXGI_SCALING_NONE
Valeur : 1
Indique à DXGI de faire apparaître le contenu de la mémoire tampon d’arrière-mémoire sans mise à l’échelle lorsque la taille de la cible de présentation n’est pas égale à la taille de la mémoire tampon d’arrière-mémoire. Les bords supérieurs de la mémoire tampon d’arrière-plan et de la cible de présentation sont alignés ensemble. Si le style WS_EX_LAYOUTRTL est associé au handle HWND à la fenêtre de sortie cible, les bords droit de la mémoire tampon arrière et de la cible de présentation sont alignés ensemble ; sinon, les bords gauches sont alignés ensemble. Toute la zone cible en dehors de la mémoire tampon d’arrière-plan est remplie avec la couleur d’arrière-plan de la fenêtre.

Cette valeur spécifie que toutes les zones cibles en dehors de la mémoire tampon d’arrière-plan d’une chaîne d’échange sont remplies avec la couleur d’arrière-plan que vous spécifiez dans un appel à IDXGISwapChain1 ::SetBackgroundColor.
DXGI_SCALING_ASPECT_RATIO_STRETCH
Valeur : 2
Indique à DXGI de mettre à l’échelle le contenu de la mémoire tampon d’arrière-mémoire pour qu’il s’adapte à la taille cible de présentation, tout en conservant les proportions de la mémoire tampon d’arrière-mémoire. Si la mémoire tampon mise à l’échelle ne remplit pas la zone de présentation, elle est centrée avec des bordures noires.

Cette constante est prise en charge sur Windows Phone 8 et Windows 10.

Notez qu’avec les chaînes d’échange de fenêtre Win32 héritées, cela fonctionne comme DXGI_SCALING_STRETCH.

Remarques

La valeur DXGI_SCALING_NONE est prise en charge uniquement pour les chaînes d’échange de modèle de présentation inversées que vous créez avec la valeur DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ou DXGI_SWAP_EFFECT_FLIP_DISCARD . Vous passez ces valeurs dans un appel à IDXGIFactory2 ::CreateSwapChainForHwnd, IDXGIFactory2 ::CreateSwapChainForCoreWindow ou IDXGIFactory2 ::CreateSwapChainForComposition.

DXGI_SCALING_ASPECT_RATIO_STRETCH préférera utiliser un remplissage horizontal, sinon il utilisera un remplissage vertical, à l’aide de la logique suivante.

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);

Notez que outputWidth et outputHeight sont les tailles de pixels de la taille cible de présentation. Dans le cas de CoreWindow, cela nécessite la conversion des valeurs logicalWidth et logicalHeight de DIPS en pixels à l’aide de la propriété PPP de la fenêtre.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP]
En-tête dxgi1_2.h

Voir aussi

Énumérations DXGI

DXGI_SWAP_CHAIN_DESC1