Microsoft DirectX 8.0 (C++)

消失したデバイスとは

Microsoft® Direct3D® デバイスの状態には、処理可能状態と消失状態がある。処理可能状態はデバイスの通常の状態であり、すべてのレンダリングが予測どおりに実行され表示される。フルスクリーン アプリケーションでキーボード フォーカスが消失するなどのイベントが発生してレンダリングできなくなると、デバイスは消失状態になる。消失状態の特性は、表面には何も現れずにすべてのレンダリング処理が失敗することである。つまり、レンダリング処理は失敗しているのに、レンダリング メソッドは成功コードを返すことがある。このような場合、IDirect3DDevice8::Present によってエラー コード D3DERR_DEVICELOST が返される。

設計では、デバイスが消失するようなすべてのシナリオが想定されているわけではない。一般的な例としては、ユーザーが Alt + Tab キーを押したときなど、つまりシステム ダイアログが初期化されたときにフォーカスが消失する。また、電力管理イベントによって、ほかのアプリケーションがフルスクリーン処理を行うときにも発生することがある。さらに、IDirect3DDevice8::Reset が失敗すると、デバイスは消失状態となる。