IDirect3D9::CreateDevice メソッド (d3d9helper.h)
ディスプレイ アダプターを表すデバイスを作成します。
構文
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
パラメーター
[in] Adapter
型: UINT
ディスプレイ アダプターを表す序数。 D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプターです。
[in] DeviceType
型: D3DDEVTYPE
目的のデバイスの種類を示す D3DDEVTYPE 列挙型のメンバー。 目的のデバイスの種類が使用できない場合、 メソッドは失敗します。
[in] hFocusWindow
種類: HWND
フォーカス ウィンドウは、アプリケーションがフォアグラウンド モードからバックグラウンド モードに切り替わると Direct3D に警告します。 「解説」を参照してください。
- 全画面表示モードの場合、指定するウィンドウは最上位のウィンドウである必要があります。
- ウィンドウ モードの場合、pPresentationParameters の hDeviceWindow メンバーが有効な NULL 以外の値に設定されている場合にのみ、このパラメーターは NULL になります。
[in] BehaviorFlags
型: DWORD
デバイスの作成を制御する 1 つ以上のオプションの組み合わせ。 詳細については、「 D3DCREATE」を参照してください。
[in, out] pPresentationParameters
作成するデバイスのプレゼンテーション パラメーターを記述する、 D3DPRESENT_PARAMETERS 構造体へのポインター。 BehaviorFlags で D3DCREATE_ADAPTERGROUP_DEVICEが指定されている場合、pPresentationParameters は配列です。 存在するヘッドの数に関係なく、1 つの深度/ステンシル サーフェスのみが自動的に作成されます。
Windows 2000 および Windows XP の場合、全画面表示デバイスの表示更新レートは次の順序で設定されます。
- デバイスでサポートされている場合は、ユーザー指定の 0 以外の ForcedRefreshRate レジストリ キー。
- プレゼンテーション パラメーターのアプリケーション指定の 0 以外の更新レート値。
- デバイスでサポートされている場合は、最新のデスクトップの更新レート。
- デバイスでサポートされている場合は 75 ヘルツ。
- デバイスでサポートされている場合は 60 ヘルツ。
- デバイスの既定値。
pPresentationParameters は、入力パラメーターと出力パラメーターの両方です。 このメソッドを呼び出すと、次のようないくつかのメンバーが変更される場合があります。
- メソッドが呼び出される前に BackBufferCount、BackBufferWidth、および BackBufferHeight が 0 の場合、メソッドが戻るときに変更されます。
- メソッドが呼び出される前 に BackBufferFormat がD3DFMT_UNKNOWN に等しい場合、メソッドが戻るときに変更されます。
[out, retval] ppReturnedDeviceInterface
種類: IDirect3DDevice9**
作成されたデバイスを表す、返された IDirect3DDevice9 インターフェイスへのポインターのアドレス。
戻り値
型: HRESULT
メソッドが成功した場合、戻り値はD3D_OK。 メソッドが失敗した場合、戻り値は次のいずれかになります:D3DERR_DEVICELOST、D3DERR_INVALIDCALL、D3DERR_NOTAVAILABLE、D3DERR_OUTOFVIDEOMEMORY。
解説
このメソッドは、完全に動作するデバイス インターフェイスを返し、必要な表示モード (またはウィンドウ表示) に設定し、適切なバック バッファーで割り当てられます。 レンダリングを開始するには、アプリケーションで深度バッファーを作成して設定するだけで済みます (D3DPRESENT_PARAMETERSで EnableAutoDepthStencil が FALSE であると仮定します)。
Direct3D デバイスを作成するときは、フォーカス ウィンドウ (hFocusWindow) とデバイス ウィンドウ ( D3DPRESENT_PARAMETERSの hDeviceWindow) という 2 つの異なるウィンドウ パラメーターを指定します。 各ウィンドウの目的は次のとおりです。
- フォーカス ウィンドウは、アプリケーションがフォアグラウンド モードからバックグラウンド モードに切り替わると Direct3D に通知します (Alt キーを押しながら Tab キーを押すか、マウスをクリックするか、またはその他の方法を使用します)。 1 つのフォーカス ウィンドウは、アプリケーションによって作成された各デバイスによって共有されます。
- デバイス ウィンドウは、画面上のバック バッファーの場所とサイズを決定します。 これは、バック バッファーの内容が Present の間にフロント バッファーにコピーされるときに Direct3D によって使用されます。
D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING、およびD3DCREATE_SOFTWARE_VERTEXPROCESSINGは相互に排他的なフラグであり、このメソッドを呼び出すときに、これらの頂点処理フラグの少なくとも 1 つを指定する必要があることに注意してください。
デバイスの一部として作成されたバック バッファーは、プレゼンテーション パラメーターでD3DPRESENTFLAG_LOCKABLE_BACKBUFFERが指定されている場合にのみロックできます。 (マルチサンプリングされたバック バッファーと深度サーフェスはロックできません。
Reset、IUnknown、および TestCooperativeLevel メソッドは、このメソッドを使用してデバイスを作成したのと同じスレッドから呼び出す必要があります。
D3DFMT_UNKNOWNは、 CreateDevice、 Reset、 CreateAdditionalSwapChain を呼び出すときに、ウィンドウ モードのバック バッファー形式に指定できます。 つまり、ウィンドウ モードで CreateDevice を呼び出す前に、アプリケーションで現在のデスクトップ形式に対してクエリを実行する必要はありません。 全画面表示モードの場合は、バック バッファー形式を指定する必要があります。
0x0 サイズのウィンドウでデバイスを作成しようとすると、 CreateDevice は失敗します。
要件
対象プラットフォーム | Windows |
ヘッダー | d3d9helper.h (D3D9.h を含む) |
Library | D3D9.lib |