IDirect3DDevice9::EndScene
IDirect3DDevice9::BeginScene を呼び出して開始されたシーンを終了します。
HRESULT
EndScene(
);
パラメータ
なし。
戻り値
メソッドが成功した場合は、D3D_OK を返します。IDirect3DDevice9::BeginScene が IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene ペア内に既にあるときに呼び出されると、このメソッドは D3DERR_INVALIDCALL で失敗します。これは、最初に IDirect3DDevice9::EndScene を呼び出すことなく、IDirect3DDevice9::BeginScene を呼び出したときにのみ発生します。
解説
このメソッドが成功すると、シーンはドライバーによるレンダリングのためにキューイングされています。これは同期メソッドではありません。このため、このメソッドが返されたときにシーンのレンダリングが完了していることは保証されません。
アプリケーションでは、レンダリングを実行する前に IDirect3DDevice9::BeginScene を呼び出す必要があり、レンダリングを完了して IDirect3DDevice9::BeginScene を呼び出す前に IDirect3DDevice9::EndScene を呼び出す必要があります。
IDirect3DDevice9::BeginScene が失敗し、デバイスがシーンを開始できなかった場合、IDirect3DDevice9::EndScene を呼び出す必要はありません。実際は、 前の IDirect3DDevice9::BeginScene が失敗した場合、IDirect3DDevice9::EndScene は失敗します。これは、複数のスワップ チェーンを作成する任意のアプリケーションに適用されます。
Present (IDirect3DDevice9::Present または IDirect3DSwapChain9::Present) への連続する呼び出しの間に最大で 1 つの IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene ペアが存在する必要があります。また、レンダリングを実行する前に IDirect3DDevice9::BeginScene を 1 回呼び出す必要があり、フレームのすべてのレンダリングがランタイムに送信された後に IDirect3DDevice9::EndScene を 1 回呼び出す必要があります。CPU とグラフィック アクセラレータ間で最大の並列処理を有効にするには、Present の呼び出しの可能な限り先頭で IDirect3DDevice9::EndScene を呼び出すことが適切です。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容