D3D11CreateDevice

ディスプレイ アダプターを表すデバイスを作成します。

HRESULT 
D3D11CreateDevice(
  IDXGIAdapter *pAdapter,
  D3D_DRIVER_TYPE DriverType,
  HMODULE Software,
  UINT Flags,
  CONST D3D_FEATURE_LEVEL *pFeatureLevels,
  UINT FeatureLevels,
  UINT SDKVersion,
  ID3D11Device **ppDevice,
  D3D_FEATURE_LEVEL *pFeatureLevel,
  ID3D11DeviceContext **ppImmediateContext
);

パラメータ

  • pAdapter
    デバイスの作成時に使用するビデオ アダプターへのポインターです (「IDXGIAdapter」を参照)。既定のアダプターを使用するには NULL を渡します。既定のアダプターは、IDXGIFactory::EnumAdapters によって最初に列挙されたアダプターです。

  • DriverType
    作成するデバイスの種類を表す D3D_DRIVER_TYPE です。

  • Software
    ソフトウェア ラスタライザーを実装する DLL のハンドルです。DriverTypeD3D_DRIVER_TYPE_SOFTWARE の場合、Software を NULL に設定することはできません。このハンドルを取得するには、LoadLibraryLoadLibraryEx、または GetModuleHandle を呼び出します。

  • Flags
    有効にするランタイム レイヤーです (「D3D11_CREATE_DEVICE_FLAG」を参照)。値はビット単位の OR 演算で指定できます。

  • pFeatureLevels
    作成を試みる機能レベルの順序を指定する D3D_FEATURE_LEVEL の配列へのポインターです。使用できる最大の機能レベルを取得するには、既定のパラメーターを使用します。pFeatureLevels を NULL に設定すると、次のような機能レベルの配列が使用されます。

     {     D3D_FEATURE_LEVEL_11_0,     D3D_FEATURE_LEVEL_10_1,     D3D_FEATURE_LEVEL_10_0,     D3D_FEATURE_LEVEL_9_3,     D3D_FEATURE_LEVEL_9_2,     D3D_FEATURE_LEVEL_9_1, };
    
  • FeatureLevels
    pFeatureLevels の要素数です。

  • SDKVersion
    SDK のバージョンです。D3D11_SDK_VERSION を指定します。

  • ppDevice
    作成されたデバイスを表す ID3D11Device オブジェクトへのポインターのアドレスを返します。

  • pFeatureLevel
    成功した場合は、成功した pFeatureLevels 配列の最初の D3D_FEATURE_LEVEL を返します。失敗した場合は 0 を返します。

  • ppImmediateContext
    デバイス コンテキストを表す ID3D11DeviceContext オブジェクトへのポインターのアドレスを返します。

戻り値

このメソッドは、「Direct3D 11 のリターン コード」のいずれかを返します。

解説 

このエントリーポイントと D3D11.DLL には Direct3D 11 ランタイムが必要です。Direct3D 11 ランタイムは、Windows 7、Windows Server 2008 R2、および Windows Vista の更新プログラム (KB971644) に付属しています。

pFeatureLevel を調べることにより、サポートされている機能レベルを確認するだけで、デバイスを作成しない場合は、ppDeviceppImmediateContext を NULL に設定します。

例については、「方法 :デバイスとイミディエイト コンテキストの作成」を参照してください。デバイスとスワップ チェーンを同時に作成するには、D3D11CreateDeviceAndSwapChain を使用します。

Direct3D 10 と Direct3D 11 の違い

Direct3D 10 では、使用するアダプターを pAdapter で指定していましたが、DriverType の指定がそのアダプターに一致しない可能性がありました。

Direct3D 11 では、ハードウェア デバイスまたはソフトウェア デバイスを作成する場合、pAdapter != NULL に設定します。これにより、他の入力が次のように制約されます。

  • DriverType を D3D_DRIVER_TYPE_UNKNOWN に設定する必要があります。
  • Software は NULL であることが必要です。

一方、pAdapter == NULL の場合、DriverType を D3D_DRIVER_TYPE_UNKNOWN に設定することはできません。次のいずれかに設定できます。

  • DriverType == D3D_DRIVER_TYPE_SOFTWARE。この場合、Software を NULL にすることはできません。
  • DriverType == D3D_DRIVER_TYPE_HARDWARE。この場合、使用するアダプターは、pAdapterIDXGIFactory::EnumAdapters( 0, ... ) によって返されたものと同じになります。

要件

ヘッダー: D3D11.h 宣言

ライブラリ: D3D11.lib 内容

関連項目

コア関数