Microsoft DirectX 8.0 (C++) |
デバイスが消失すると、アプリケーションはそのデバイスに対して、処理可能状態に復元できるかどうかを問い合わせる。復元できない場合は、デバイスが復元できるまでアプリケーションは待機する。
復元できる場合、アプリケーションはすべてのビデオ メモリ リソースとスワップ チェーンを破棄して、デバイスの復元に備える。次に、アプリケーションは IDirect3DDevice8::Reset メソッドを呼び出す。Reset は、デバイスが消失状態のときに有効な唯一のメソッドであり、アプリケーションがデバイスを消失状態から処理可能状態に戻すことができる唯一のメソッドである。IDirect3DDevice8::CreateRenderTarget や IDirect3DDevice8::CreateDepthStencilSurface で作成されたリソースなど、D3DPOOL_DEFAULT で割り当てられたすべてのリソースをアプリケーションが解放しない限り、Reset は失敗する。
ほとんどの場合、Microsoft® Direct3D® を頻繁に呼び出してもデバイスが消失しているかどうかに関する情報は返らない。アプリケーションは、消失したデバイスの通知を受け取らなくても、IDirect3DDevice8::DrawPrimitive などのレンダリング メソッドの呼び出しを続行できる。内部的には、これらの処理は、デバイスが処理可能状態にリセットされるまで破棄される。
アプリケーションは、デバイスが消失したときの処理を判定するために IDirect3DDevice8::TestCooperativeLevel メソッドの戻り値を照会する。
いずれの場合も、Reset の呼び出しにはビデオ メモリ リソースの破棄が前提条件となる。これは、デバイスが消失していない場合も同様である。