IDirect3DDevice9::Reset
スワップ チェーンのタイプ、サイズ、およびフォーマットをリセットします。
HRESULT
Reset(
D3DPRESENT_PARAMETERS* pPresentationParameters
);
パラメータ
- pPresentationParameters
新しいプレゼンテーション パラメーターを表す D3DPRESENT_PARAMETERS 構造体へのポインター。この値には NULL を指定できません。
全画面モードに切り替えるときに、Direct3D はバックバッファー フォーマットに一致するデスクトップ フォーマットを検索します。これにより、バックバッファー およびフロント バッファーのフォーマットは同じになります (カラー変換の必要を回避します)。
このメソッドは、次のように設定します。 - BackBufferCount、BackBufferWidth、および BackBufferHeight はゼロに設定されます。
- BackBufferFormat は、ウィンドウ表示モードの場合にのみ、D3DFMT_UNKNOWN に設定されます。全画面モードの場合はフォーマットを指定する必要があります。
戻り値
返される可能性のある戻り値は次のとおりです。D3D_OK、D3DERR_DEVICELOST、D3DERR_DEVICEREMOVED、D3DERR_DRIVERINTERNALERROR、または D3DERR_OUTOFVIDEOMEMORY (「D3DERR」を参照)。
解説
IDirect3DDevice9::Reset の呼び出しが失敗すると、デバイスは "リセットされていない" ステート (IDirect3DDevice9::TestCooperativeLevel の呼び出しの戻り値 D3DERR_DEVICENOTRESET で指定) に既にある場合を除き、"失われた" ステート (IDirect3DDevice9::TestCooperativeLevel の呼び出しの戻り値 D3DERR_DEVICELOST で指定) に配置されます。失われたデバイスのコンテキストで IDirect3DDevice9::Reset を使用する方法の詳細については、「IDirect3DDevice9::TestCooperativeLevel」および「喪失したデバイス (Direct3D 9)」を参照してください。
IDirect3DDevice9::Reset を呼び出すと、すべてのテクスチャー メモリー サーフェスが失われ、管理下のテクスチャーはビデオ メモリーからフラッシュされ、すべてのステート情報が失われます。デバイスに対して IDirect3DDevice9::Reset メソッドを呼び出す前に、デバイスに関連付けられたすべての明示的なレンダー ターゲット、深度ステンシル サーフェス、追加のスワップ チェーン、ステート ブロック、および D3DPOOL_DEFAULT リソースを解放する必要があります。
スワップ チェーンには、次の 2 種類があります。全画面またはウィンドウ表示。新しいスワップ チェーンが全画面の場合、アダプターは新しいサイズに一致する表示モードになります。
Direct3D 9 アプリケーションは、このメソッドの呼び出し中 (このメソッドからリターンする前など) にメッセージが送信される場合があります。このため、アプリケーションでは、そのような場合に Direct3D を呼び出さないように注意する必要があります。さらに、IDirect3DDevice9::Reset が失敗すると、呼び出すことができる有効なメソッドは IDirect3DDevice9::Reset、IDirect3DDevice9::TestCooperativeLevel、および各種 Release メンバー関数のみです。その他のメソッドを呼び出すと例外が発生します。
IDirect3DDevice9::Reset は、リセット対象のデバイスの作成に使用したものとは異なるスレッド上で呼び出すと、失敗します。
Direct3D 9 で IDirect3DDevice9::Reset を呼び出しても、ピクセル シェーダーおよび頂点シェーダーは影響を受けません。アプリケーションで明示的に作成し直す必要はありません。
D3DFMT_UNKNOWN は、IDirect3D9::CreateDevice、IDirect3DDevice9::Reset、および IDirect3DDevice9::CreateAdditionalSwapChain を呼び出すときに、ウィンドウ表示モードのバック バッファー フォーマットに対して指定できます。つまり、ウィンドウ表示モードの IDirect3D9::CreateDevice を呼び出す前に、現在のデスクトップ フォーマットをクエリする必要はありません。フルスクリーン モードの場合、バック バッファー フォーマットを指定する必要があります。BackBufferCount をゼロに設定する (BackBufferCount = 0) と、バック バッファーは 1 つになります。
グループ内の複数のディスプレイ アダプターをリセットするときは、アダプター グループのディスプレイごとに D3DPRESENT_PARAMETERS 構造体の配列をポイントするように pPresentationParameters を設定します。
D3DCREATE_ADAPTERGROUP_DEVICE を使用してマルチヘッド デバイスを作成した場合、IDirect3DDevice9::Reset では一連の D3DPRESENT_PARAMETERS 構造体 (各構造体で全画面表示を指定) から構成される配列を指定する必要があります。ウィンドウ表示モードに戻るには、デバイスを破棄して、ウィンドウ表示モードでマルチヘッド以外のデバイスを再作成する必要があります。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容
関連項目
D3DSWAPEFFECT, D3DPRESENT_PARAMETERS, IDirect3DDevice9::Present, マルチヘッド (Direct3D 9)