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 を渡します。
DriverType
種類: D3D_DRIVER_TYPE
作成するドライバーの種類を表す D3D_DRIVER_TYPE。
Software
種類: HMODULE
ソフトウェア ラスタライザーを実装する DLL へのハンドル。 DriverType がD3D_DRIVER_TYPE_SOFTWAREの場合、ソフトウェアは NULL にすることはできません。 LoadLibrary、LoadLibraryEx、または GetModuleHandle を呼び出してハンドルを取得します。
Flags
型: UINT
有効にするランタイム レイヤー ( D3D11_CREATE_DEVICE_FLAGを参照)。値は、ビットごとの OR を組み合わせて使用できます。
[in, optional] pFeatureLevels
型: const D3D_FEATURE_LEVEL*
作成しようとする特徴レベルの順序を決定する、 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
型: 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 インターフェイスを取得します。
ppDevice と ppImmediateContext を NULL に設定して、デバイスを作成せずに pFeatureLevel を調べることでサポートされている機能レベルを決定します。
例については、「 方法: デバイスとイミディエイト コンテキストを作成する」を参照してください。デバイスとスワップ チェーンを同時に作成するには、 D3D11CreateDeviceAndSwapChain を使用します。
pAdapter パラメーターを NULL 以外の値に設定する場合は、DriverType パラメーターをD3D_DRIVER_TYPE_UNKNOWN値に設定する必要もあります。 pAdapter パラメーターを NULL 以外の値に設定し、DriverType パラメーターをD3D_DRIVER_TYPE_HARDWARE値に設定すると、D3D11CreateDevice は HRESULT E_INVALIDARGを返します。
Direct3D 10 と Direct3D 11 の違い: Direct3D 10 では、 pAdapter が存在すると、使用するアダプターが指示され、 DriverType が アダプターの内容と一致しない可能性があります。 Direct3D 11 で、ハードウェアまたはソフトウェア デバイスを作成しようとしている場合は、 pAdapter != NULL を 設定して、他の入力を次のように制限します。
|
関数シグネチャ PFN_D3D11_CREATE_DEVICEは typedef として提供されるため、静的リンクではなく動的リンク手法 (GetProcAddress) を使用できます。
Windows Phone 8: この API はサポートされています。
Windows Phone 8.1: この API はサポートされています。
必要条件
対象プラットフォーム | Windows |
ヘッダー | d3d11.h |
Library | D3D11.lib |
[DLL] | D3D11.dll |