IDirect3D9::CreateDevice メソッド (d3d9.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のいずれかになります。
注釈
このメソッドは、完全に動作するデバイス インターフェイスを返し、必要な表示モード (またはウィンドウ化) に設定し、適切なバック バッファーを使用して割り当てられます。 レンダリングを開始するには、アプリケーションで深度バッファーを作成して設定するだけで済みます (enableAutoDepthStencil がD3DPRESENT_PARAMETERSで 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 |
ヘッダー | d3d9.h (D3D9.h を含む) |
Library | D3D9.lib |