Win32 API 日本語リファレンス
ホームGraphics.Dxgi › DXGI_SCALING

DXGI_SCALING

列挙型
基底型i4

メンバー 3

名前10進16進説明
DXGI_SCALING_STRETCH00x0バックバッファーの内容をプレゼンテーション ターゲットのサイズに合わせて拡大縮小するよう DXGI に指示します。これは IDXGIFactory::CreateSwapChain メソッドを呼び出したときの DXGI の暗黙的な動作です。
DXGI_SCALING_NONE10x1

プレゼンテーション ターゲットのサイズがバックバッファーのサイズと等しくない場合に、バックバッファーの内容を拡大縮小せずに表示するよう DXGI に指示します。バックバッファーとプレゼンテーション ターゲットの上端が揃えられます。ターゲット出力ウィンドウの HWND ハンドルに WS_EX_LAYOUTRTL スタイルが関連付けられている場合は、バックバッファーとプレゼンテーション ターゲットの右端が揃えられます。それ以外の場合は左端が揃えられます。バックバッファーの外側にあるターゲット領域はすべて、ウィンドウの背景色で塗りつぶされます。

この値は、スワップ チェーンのバックバッファーの外側にあるターゲット領域がすべて、IDXGISwapChain1::SetBackgroundColor の呼び出しで指定した背景色で塗りつぶされることを指定します。

DXGI_SCALING_ASPECT_RATIO_STRETCH20x2

バックバッファーのアスペクト比を維持しながら、バックバッファーの内容をプレゼンテーション ターゲットのサイズに合わせて拡大縮小するよう DXGI に指示します。拡大縮小されたバックバッファーがプレゼンテーション領域を埋めない場合は、中央に配置され、周囲は黒い枠になります。

この定数は Windows Phone 8 および Windows 10 でサポートされます。

なお、従来の Win32 ウィンドウのスワップ チェーンでは、これは DXGI_SCALING_STRETCH と同じ動作になります。

公式ドキュメント

バックバッファーのサイズがターゲット出力のサイズと一致しない場合のサイズ変更動作を識別します。

解説(Remarks)

DXGI_SCALING_NONE 値は、DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL または DXGI_SWAP_EFFECT_FLIP_DISCARD 値を指定して作成したフリップ プレゼンテーション モデルのスワップ チェーンでのみサポートされます。これらの値は、IDXGIFactory2::CreateSwapChainForHwndIDXGIFactory2::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);

outputWidthoutputHeight は、プレゼンテーション ターゲットのサイズをピクセル単位で表した値である点に注意してください。CoreWindow の場合は、ウィンドウの DPI プロパティを使用して logicalWidthlogicalHeight の値を DIPS からピクセルへ変換する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum DXGI_SCALING : int {
    DXGI_SCALING_STRETCH = 0,
    DXGI_SCALING_NONE = 1,
    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} DXGI_SCALING;
public enum DXGI_SCALING : int
{
    DXGI_SCALING_STRETCH = 0,
    DXGI_SCALING_NONE = 1,
    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2,
}
Public Enum DXGI_SCALING As Integer
    DXGI_SCALING_STRETCH = 0
    DXGI_SCALING_NONE = 1
    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
End Enum
import enum

class DXGI_SCALING(enum.IntEnum):
    DXGI_SCALING_STRETCH = 0
    DXGI_SCALING_NONE = 1
    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
// DXGI_SCALING
pub const DXGI_SCALING_STRETCH: i32 = 0;
pub const DXGI_SCALING_NONE: i32 = 1;
pub const DXGI_SCALING_ASPECT_RATIO_STRETCH: i32 = 2;
// DXGI_SCALING
const (
	DXGI_SCALING_STRETCH int32 = 0
	DXGI_SCALING_NONE int32 = 1
	DXGI_SCALING_ASPECT_RATIO_STRETCH int32 = 2
)
const
  DXGI_SCALING_STRETCH = 0;
  DXGI_SCALING_NONE = 1;
  DXGI_SCALING_ASPECT_RATIO_STRETCH = 2;
// DXGI_SCALING
pub const DXGI_SCALING_STRETCH: i32 = 0;
pub const DXGI_SCALING_NONE: i32 = 1;
pub const DXGI_SCALING_ASPECT_RATIO_STRETCH: i32 = 2;
const
  DXGI_SCALING_STRETCH* = 0
  DXGI_SCALING_NONE* = 1
  DXGI_SCALING_ASPECT_RATIO_STRETCH* = 2
enum DXGI_SCALING : int {
    DXGI_SCALING_STRETCH = 0,
    DXGI_SCALING_NONE = 1,
    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2,
}
#define global DXGI_SCALING_STRETCH              0x0
#define global DXGI_SCALING_NONE                 0x1
#define global DXGI_SCALING_ASPECT_RATIO_STRETCH 0x2