D3D11CreateDevice 関数 (d3d11.h)

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

構文

HRESULT D3D11CreateDevice(
  [in, optional]  IDXGIAdapter            *pAdapter,
                  D3D_DRIVER_TYPE         DriverType,
                  HMODULE                 Software,
                  UINT                    Flags,
  [in, optional]  const D3D_FEATURE_LEVEL *pFeatureLevels,
                  UINT                    FeatureLevels,
                  UINT                    SDKVersion,
  [out, optional] ID3D11Device            **ppDevice,
  [out, optional] D3D_FEATURE_LEVEL       *pFeatureLevel,
  [out, optional] ID3D11DeviceContext     **ppImmediateContext
);

パラメーター

[in, optional] pAdapter

種類: IDXGIAdapter*

デバイスの作成時に使用するビデオ アダプターへのポインター。 IDXGIFactory1::EnumAdapters によって列挙される最初のアダプターである既定のアダプターを使用するには、NULL を渡します。

メモ アプリケーションで DXGI 1.0 (IDXGIFactory) と DXGI 1.1 (IDXGIFactory1) の使用を混在させないでください。 IDXGIFactory または IDXGIFactory1 を使用しますが、アプリケーションでは両方を使用しないでください。
 

DriverType

種類: D3D_DRIVER_TYPE

作成するドライバーの種類を表す D3D_DRIVER_TYPE

Software

種類: HMODULE

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

Flags

型: UINT

有効にするランタイム レイヤー ( D3D11_CREATE_DEVICE_FLAGを参照)。値は、ビットごとの OR を組み合わせて使用できます。

[in, optional] pFeatureLevels

型: const D3D_FEATURE_LEVEL*

作成しようとする特徴レベルの順序を決定する、 D3D_FEATURE_LEVELの配列へのポインター。 pFeatureLevelsNULL に設定されている場合、この関数は次の特徴レベルの配列を使用します。

{
    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,
};
メモ Direct3D 11.1 ランタイムがコンピューターに存在し、 pFeatureLevelsNULL に設定されている場合、この関数は D3D_FEATURE_LEVEL_11_1 デバイスを作成しません。 D3D_FEATURE_LEVEL_11_1 デバイスを作成するには、D3D_FEATURE_LEVEL_11_1を含むD3D_FEATURE_LEVEL配列を明示的に指定する必要があります。 Direct3D 11.1 ランタイムがインストールされていないコンピューター上のD3D_FEATURE_LEVEL_11_1を含む D3D_FEATURE_LEVEL 配列を指定すると、この関数はすぐにE_INVALIDARGで失敗します。
 

FeatureLevels

型: UINT

pFeatureLevels 内の要素の数。

SDKVersion

型: UINT

SDK のバージョン。D3D11_SDK_VERSIONを使用 します

[out, optional] ppDevice

種類: ID3D11Device**

作成されたデバイスを表す ID3D11Device オブジェクトへのポインターのアドレスを返します。 このパラメーターが NULL の場合、ID3D11Device は返されません。

[out, optional] pFeatureLevel

種類: D3D_FEATURE_LEVEL*

成功した場合は、成功した pFeatureLevels 配列から最初のD3D_FEATURE_LEVELを返します。 サポートされている機能レベルを決定する必要がない場合は、入力として NULL を 指定します。

[out, optional] ppImmediateContext

種類: ID3D11DeviceContext**

デバイス コンテキストを表す ID3D11DeviceContext オブジェクトへのポインターのアドレスを返します。 このパラメーターが NULL の場合、ID3D11DeviceContext は返されません。

戻り値

型: HRESULT

このメソッドは、 Direct3D 11 リターン コードのいずれかを返すことができます。

pAdapter パラメーターを NULL 以外の値に設定し、DriverType パラメーターを D3D_DRIVER_TYPE_HARDWARE 値に設定した場合、このメソッドはE_INVALIDARGを返します。

FlagsでD3D11_CREATE_DEVICE_DEBUGを指定し、正しくないバージョンのデバッグ レイヤーがコンピューターにインストールされている場合、このメソッドはDXGI_ERROR_SDK_COMPONENT_MISSINGを返します。 最新の Windows SDK をインストールして、正しいバージョンを取得します。

解説

このエントリ ポイントは、Windows 7、Windows Server 2008 R2、および Windows Vista (KB971644) の更新プログラムとして使用できる Direct3D 11 ランタイムでサポートされています。

Windows 7 用プラットフォーム更新プログラムがインストールされている Windows 8、Windows Server 2012、Windows 7 および Windows Server 2008 R2 で使用できる Direct3D 11.1 デバイス (ID3D11Device1) を作成するには、まずこの関数を使用して ID3D11Device を作成し、ID3D11Device1 インターフェイスを取得するために ID3D11Device1 オブジェクトで QueryInterface メソッドを呼び出します。

Windows 8.1および Windows Server 2012 R2 で使用できる Direct3D 11.2 デバイス (ID3D11Device2) を作成するには、まずこの関数を使用して ID3D11Device を作成し、ID3D11Device オブジェクトで QueryInterface メソッドを呼び出して ID3D11Device2 インターフェイスを取得します。

ppDeviceppImmediateContextNULL に設定して、デバイスを作成せずに pFeatureLevel を調べることでサポートされている機能レベルを決定します。

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

pAdapter パラメーターを NULL 以外の値に設定する場合は、DriverType パラメーターをD3D_DRIVER_TYPE_UNKNOWN値に設定する必要もあります。 pAdapter パラメーターを NULL 以外の値に設定し、DriverType パラメーターをD3D_DRIVER_TYPE_HARDWARE値に設定すると、D3D11CreateDeviceHRESULT E_INVALIDARGを返します。

Direct3D 10 と Direct3D 11 の違い:

Direct3D 10 では、 pAdapter が存在すると、使用するアダプターが指示され、 DriverType が アダプターの内容と一致しない可能性があります。

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

  • DriverType はD3D_DRIVER_TYPE_UNKNOWNする必要があります
  • ソフトウェアNULL である必要があります。
一方、 pAdapter == NULL の場合、 DriverType をD3D_DRIVER_TYPE_UNKNOWNに設定することはできません。次のいずれかに設定できます。
  • DriverType == D3D_DRIVER_TYPE_SOFTWARE場合、ソフトウェアNULL にすることはできません。
  • DriverType == がD3D_DRIVER_TYPE_HARDWARE場合、使用されるアダプターは既定のアダプターになります。これは、IDXGIFactory1::EnumAdapters によって列挙される最初のアダプターです
 

関数シグネチャ PFN_D3D11_CREATE_DEVICEは typedef として提供されるため、静的リンクではなく動的リンク手法 (GetProcAddress) を使用できます。

Windows Phone 8: この API はサポートされています。

Windows Phone 8.1: この API はサポートされています。

必要条件

   
対象プラットフォーム Windows
ヘッダー d3d11.h
Library D3D11.lib
[DLL] D3D11.dll

関連項目

コア関数