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_SCALING_NONE値は、 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL または DXGI_SWAP_EFFECT_FLIP_DISCARD 値を使用して作成したフリップ プレゼンテーション モデル スワップ チェーンでのみサポートされます。 これらの値は 、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 アプリ] |
Header | dxgi1_2.h |