IDirect3DDevice9::BeginScene

シーンを開始します。

HRESULT 
BeginScene(
);

パラメータ

なし。

戻り値

メソッドが成功した場合は、D3D_OK を返します。IDirect3DDevice9::BeginSceneIDirect3DDevice9::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) への連続する呼び出しの間に IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene ペアが 1 つ存在する必要があります。また、レンダリングを実行する前に IDirect3DDevice9::BeginScene を 1 回呼び出す必要があり、フレームのすべてのレンダリングがランタイムに送信された後に IDirect3DDevice9::EndScene を 1 回呼び出す必要があります。複数のネストしていない IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene ペアが Present の呼び出しの間に存在してもかまいませんが、パフォーマンスの低下が発生することがあります。CPU とグラフィック アクセラレータ間で最大の並列処理を有効にするには、Present の呼び出しの可能な限り先頭で IDirect3DDevice9::EndScene を呼び出すことが適切です。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容