次の方法で共有


PFND3DDDI_SETDISPLAYMODE コールバック関数 (d3dumddi.h)

SetDisplayMode 関数は、GDI デスクトップでサポートされていない表示モードまたはプライマリに切り替わります。

構文

PFND3DDDI_SETDISPLAYMODE Pfnd3dddiSetdisplaymode;

HRESULT Pfnd3dddiSetdisplaymode(
  HANDLE hDevice,
  const D3DDDIARG_SETDISPLAYMODE *unnamedParam2
)
{...}

パラメーター

hDevice

ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。

unnamedParam2

pData [in]

表示モードを設定するためのパラメーターを指定する D3DDDIARG_SETDISPLAYMODE 構造体へのポインター。

戻り値

SetDisplayMode は、表示モードが正常に設定されていない場合に、S_OKまたは適切なエラー結果を返します。

備考

Microsoft Direct3D ランタイムは、SetDisplayMode を呼び出して、GDI デスクトップでサポートされていない表示モードまたはプライマリに切り替えます。 次の一覧では、このようなプライマリの例について説明します。

  • チャネルあたり 10 ビット (10:10:10:2) で作成されたプライマリーは、ターゲット形式 (たとえば、D3DFMT_A2R10G10B10) を表示およびレンダリングします。
  • スキャンアウト中に複数サンプリングが実行される、複数サンプリングされたプライマリ
  • 全画面表示の Microsoft DirectX バージョン 9.L アプリケーションで使用される永続的なプライマリ
Direct3D ランタイムは、ユーザー モード ディスプレイ ドライバーの CreateResource 関数を呼び出して、スキャンアウトするプライマリを作成します。ただし、ドライバーは、SetDisplayMode 関数が呼び出された場合にのみ、ハードウェアをスキャンするようにプログラムする必要があります。 そのため、ランタイムは、hResourceSubResourceIndex ドライバーの CreateResource 関数の呼び出しによって作成されたプライマリに、pData パラメーターによって指される D3DDDIARG_SETDISPLAYMODE 構造体のメンバーを設定します。 その後、ドライバーは、hResource で表されるプライマリを変換し、SubResourceIndex をプライマリ割り当てハンドルに する必要があります。 ドライバーがこの変換を行った後、ドライバーは、pfnSetDisplayModeCb 関数の呼び出しで結果のハンドルを渡す必要があります。これにより、ディスプレイ ミニポート ドライバーの DxgkDdiCommitVidPn 関数への呼び出しが開始されます。

ユーザー モード ディスプレイ ドライバーは、pfnSetDisplayModeCb して割り当てをスキャンする呼び出しで、D3DDDICB_SETDISPLAYMODE 構造体の hPrimaryAllocation メンバーを設定できます。 ただし、割り当てはプライマリとしてマークする必要があります (つまり、ユーザー モードのディスプレイ ドライバーは、pfnAllocateCb 関数を呼び出して割り当てを作成する D3DDDI_ALLOCATIONINFO 構造体の Flags メンバーで、プライマリ ビット フィールド フラグを設定する必要があります)。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー d3dumddi.h (D3dumddi.h を含む)

関連項目

D3DDDIARG_SETDISPLAYMODE

D3DDDI_DEVICEFUNCS

pfnSetDisplayModeCb