次の方法で共有


IDXGIOutput::FindClosestMatchingMode

要求された表示モードに一番近い表示モードを検索します。

HRESULT 
FindClosestMatchingMode(
  const DXGI_MODE_DESC *pModeToMatch,
  DXGI_MODE_DESC *pClosestMatch,
  IUnknown *pConcernedDevice
);

パラメータ

  • pModeToMatch
    希望する表示モード (DXGI_MODE_DESC を参照)。DXGI_MODE_DESC のメンバーを指定しないことで、そのメンバーに対する設定が存在しないことを示すことができます。Width または Height に 0 を指定すると、その値は無指定となります。Width または Height のいずれかを 0 にする場合、両方を 0 に設定する必要があります。RefreshRate の分子と分母の両方に 0 を指定すると、この値は無指定となります。DXGI_MODE_DESC の他のメンバーは列挙型値を持ち、そのメンバーの値が指定されていないことを示します。pConnectedDevice が NULL の場合は、Format に DXGI_FORMAT_UNKNOWN を指定することはできません。
  • pClosestMatch
    pModeToMatch に最も近いモード。
  • pConcernedDevice
    Direct3D デバイス インターフェイスへのポインター。このパラメーターが NULL の場合、pModeToMatch のフォーマットと一致するフォーマットを持つモードのみが返されます。それ以外の場合は、デバイスによってスキャンアウトがサポートされているフォーマットのみが返されます。

戻り値

次の DXGI_ERROR のいずれかを返します。

解説 

Direct3D デバイスは、UNORM フォーマットを必要とします。

このメソッドは、pModeToMatch で指定したモードに最も近い利用可能な表示モードを探し出します。

ランクが近い複数のフィールド (つまり、指定したすべてのフィールド、指定していないすべてのフィールドなど) は、次の順序で解決されます。

  1. スキャンライン順序
  2. スケーリング
  3. フォーマット
  4. 解像度
  5. リフレッシュ レート

特定フィールドで最も近い値を決定するときは、それまでに一致したフィールドを使用して表示モード一覧の選択肢をフィルター処理し、以降のフィールドは無視します。たとえば、解像度の一致を探す場合は、スキャンライン順序、スケーリング、およびフォーマットの特定の値で表示モード一覧はフィルター処理済みで、リフレッシュ レートは無視されます。FindClosestMatchingMode を使用するすべてのシナリオでの絶対的な順序がこの順序になるわけではありません。アプリケーション側で一部の値を最初に選択できるため、フィールドの選択順序が実質的に変化するからです。

表示モードのフィールドの一致照合は、一度に 1 つずつ、一般的には指定の順序で行われます。

フィールドを指定しない場合、FindClosestMatchingMode では、現在の出力に関連するデスクトップ値に近いモードが検索されます。現在の出力がデスクトップを構成していない場合は、デフォルトのデスクトップ出力を使用して値が検索されます。まったく指定のない表示モードをアプリケーションで使用している場合、FindClosestMatchingMode が返す表示モードは通常、現在の出力のデスクトップ設定に一致する表示モードになります。指定のあるフィールドは、無指定のフィールドよりも優先され、先に解決されます。

要件

ヘッダー: DXGI.h 宣言

ライブラリ: DXGI.lib 内容

関連項目

IDXGIOutput