Microsoft DirectX 8.0 (C++)

IDirect3D8::CreateDevice

ディスプレイ アダプタを表すためのデバイスを作成する。

HRESULT CreateDevice(
  UINT Adapter,
  D3DDEVTYPE DeviceType,
  HWND  hFocusWindow,
  DWORD BehaviorFlags,
  D3DPRESENT_PARAMETERS* pPresentationParameters,
  IDirect3DDevice8** ppReturnedDeviceInterface
);

パラメータ

Adapter
[in] ディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプタである。
DeviceType
[in] D3DDEVTYPE 列挙型のメンバ。目的のデバイス タイプを示す。目的のデバイス タイプが使用できない場合、このメソッドは失敗する。
hFocusWindow
[in] この Microsoft® Direct3D® デバイスでフォーカスを設定するウィンドウ ハンドル。指定するウィンドウは、フルスクリーンの最上位ウィンドウでなければならない。
BehaviorFlags
[in] Direct3D デバイスの全体的な動作を制御する 1 つ以上のフラグの組み合わせ。
D3DCREATE_FPU_PRESERVE
アプリケーションで倍精度 FPU または FPU 例外有効が必要であることを示す。Direct3D は、呼び出されるたびに FPU の状態を設定する。このフラグを設定すると、Direct3D のパフォーマンスが低下する。
D3DCREATE_HARDWARE_VERTEXPROCESSING
ハードウェア頂点処理を指定する。「注意」を参照すること。
D3DCREATE_MIXED_VERTEXPROCESSING
混合 (ソフトウェアとハードウェア両方) の頂点処理を指定する。「注意」を参照すること。
D3DCREATE_MULTITHREADED
アプリケーションが Direct3D にマルチスレッドでの安全性を要求することを示す。Direct3D はグローバル クリティカル セクションをいっそう頻繁に取得するようになり、パフォーマンスが低下する可能性がある。
D3DCREATE_PUREDEVICE
Direct3D が、ステート ブロックに格納できる内容に対する Get* の呼び出しをサポートしないことを指定する。また、頂点処理のエミュレーション サービスを提供しないことを Direct3D に指示する。これは、デバイスが頂点処理をサポートしていない場合、アプリケーションではトランスフォーム後の頂点しか使用できないことを意味する。
D3DCREATE_SOFTWARE_VERTEXPROCESSING
ソフトウェア頂点処理を指定する。「注意」を参照すること。
pPresentationParameters
[in, out] D3DPRESENT_PARAMETERS 構造体へのポインタ。作成するデバイスのプレゼンテーション パラメータが記述されている。CreateDevice を呼び出すと、D3DPRESENT_PARAMETERSBackBufferCount メンバの値が変更される場合がある。バック バッファ カウントは、バック バッファの正しい数を反映して変更される。
ppReturnedDeviceInterface
[out, retval] 返される IDirect3DDevice8 インターフェイスへのポインタのアドレス。作成されたデバイスを表している。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL
D3DERR_NOTAVAILABLE
D3DERR_OUTOFVIDEOMEMORY

注意

このメソッドからは、要求したディスプレイ モード (またはウィンドウ) に設定されて、適切なバック バッファが割り当てられた、完全に動作するデバイス インターフェイスが返る。アプリケーションは、必要に応じて深度バッファを作成して設定するだけで、レンダリングを開始できる。

このメソッドは、WM_CREATE の処理中に実行すべきではない。したがって、アプリケーションは、WM_CREATE の処理中に Direct3D にウィンドウ ハンドルを渡してはならない。DirectX 8.0 アプリケーションでは、この呼び出しの実行中 (つまり、この呼び出しが返る前) はアプリケーションにメッセージが送信されることを期待できる。アプリケーションは、このときに Direct3D を呼び出さないための警告を受け取る。また、デバイスの作成、解放、またはリセットの呼び出しは、フォーカス ウィンドウのウィンドウ プロシージャと同じスレッドでのみ行われることに注意すること。

D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING、および D3DCREATE_SOFTWARE_VERTEXPROCESSING は相互に排他的なフラグであり、CreateDevice を呼び出すときは、この頂点処理フラグの少なくとも 1 つを必ず指定しなければならない。

デバイスの一部として作成されたバック バッファは、プレゼンテーション パラメータで D3DPRESENTFLAG_LOCKABLE_BACKBUFFER が指定されている場合にのみロック可能である。マルチサンプル バック バッファおよび深度サーフェスはロックできない。

メソッドの IDirect3DDevice8::ResetRelease、および IDirect3DDevice8::TestCooperativeLevel は、CreateDevice を使用してデバイスを作成した同じスレッドから呼び出す必要がある。

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。

参照

Direct3DCreate8IDirect3DDevice8::ResetD3DDEVICE_CREATION_PARAMETERS