IDirect3DDevice9::Reset メソッド (d3d9.h)
スワップ チェーンの種類、サイズ、および形式をリセットします。
構文
HRESULT Reset(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);
パラメーター
[in, out] pPresentationParameters
新しいプレゼンテーション パラメーターを記述する 、D3DPRESENT_PARAMETERS 構造体へのポインター。 この値を NULL にすることはできません。
全画面表示モードに切り替えると、Direct3D はバック バッファー形式に一致するデスクトップ形式を検索して、バック バッファーとフロント バッファーの形式が同じになるようにします (色変換の必要性を排除するため)。
このメソッドが返された場合:
- BackBufferCount、BackBufferWidth、および BackBufferHeight は 0 に設定されます。
- BackBufferFormat は、ウィンドウ モードでのみ D3DFMT_UNKNOWN に設定されます。全画面表示モードでは、形式を指定する必要があります。
戻り値
種類: HRESULT
戻り値としては、D3D_OK、D3DERR_DEVICELOST、D3DERR_DEVICEREMOVED、D3DERR_DRIVERINTERNALERROR、D3DERR_OUTOFVIDEOMEMORYなどがあります ( D3DERR を参照)。
注釈
IDirect3DDevice9::Reset の呼び出しが失敗した場合、(IDirect3DDevice9::TestCooperativeLevel への呼び出しからD3DERR_DEVICENOTRESETの戻り D3DERR_DEVICELOST値によって示される) "リセットなし" 状態でない限り、デバイスは "失われた" 状態に置かれます (IDirect3DDevice9::TestCooperativeLevel の呼び出しからの戻り値によって示されます)。 紛失したデバイスのコンテキストでの IDirect3DDevice9::Reset の使用に関する詳細については、IDirect3DDevice9::TestCooperativeLevel および Lost Devices (Direct3D 9) を参照してください。
IDirect3DDevice9::Reset を呼び出すと、すべてのテクスチャ メモリ サーフェスが失われ、マネージド テクスチャがビデオ メモリからフラッシュされ、すべての状態情報が失われます。 デバイスの IDirect3DDevice9::Reset メソッドを呼び出す前に、アプリケーションは明示的なレンダー ターゲット、深度ステンシル サーフェス、追加のスワップ チェーン、状態ブロック、およびデバイスに関連付けられているD3DPOOL_DEFAULTリソースを解放する必要があります。
スワップ チェーンには、全画面表示とウィンドウ切り替えの 2 種類があります。 新しいスワップ チェーンが全画面表示の場合、アダプターは新しいサイズに一致する表示モードに配置されます。
Direct3D 9 アプリケーションは、この呼び出し中 (この呼び出しが返される前など) にメッセージが送信されることを想定できます。アプリケーションでは、現時点では Direct3D を呼び出さない予防措置を講じる必要があります。 さらに、 IDirect3DDevice9::Reset が失敗した場合に呼び出すことができる有効なメソッドは 、IDirect3DDevice9::Reset、 IDirect3DDevice9::TestCooperativeLevel、およびさまざまな Release メンバー関数だけです。 他のメソッドを呼び出すと、例外が発生する可能性があります。
IDirect3DDevice9::Reset の呼び出しは、リセットされるデバイスの作成に使用されたスレッドとは異なるスレッドで呼び出されると失敗します。
ピクセル シェーダーと頂点シェーダーは 、IDirect3DDevice9::Reset 呼び出しを Direct3D 9 で存続させます。 アプリケーションで明示的に再作成する必要はありません。
D3DFMT_UNKNOWNは、IDirect3D9::CreateDevice、IDirect3DDevice9::Reset、および IDirect3DDevice9::CreateAdditionalSwapChain を呼び出すときに、ウィンドウ モードのバック バッファー形式に指定できます。 つまり、ウィンドウ モードで IDirect3D9::CreateDevice を呼び出す前に、アプリケーションで現在のデスクトップ形式に対してクエリを実行する必要はありません。 全画面表示モードの場合は、バック バッファー形式を指定する必要があります。 BackBufferCount を 0 (BackBufferCount = 0) に設定すると、1 つのバック バッファーになります。
グループ内の複数のディスプレイ アダプターをリセットする場合は、pPresentationParameters を、アダプター グループ内のディスプレイごとに 1 つずつ、 D3DPRESENT_PARAMETERS 構造体の配列を指すように設定します。
D3DCREATE_ADAPTERGROUP_DEVICEを使用してマルチヘッド デバイスが作成された場合、IDirect3DDevice9::Reset には、各構造体で全画面表示を指定する必要があるD3DPRESENT_PARAMETERS構造体の配列が必要です。 ウィンドウ モードに戻すには、アプリケーションでデバイスを破棄し、ウィンドウ モードで非マルチヘッド デバイスを再作成する必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d9.h (D3D9.h を含む) |
Library | D3D9.lib |