D3D11CreateDeviceAndSwapChain 関数 (d3d11.h)

表示アダプターと、レンダリングに使用されるスワップ チェーンを表すデバイスを作成します。

構文

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

パラメーター

[in, optional] pAdapter

種類: IDXGIAdapter*

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

メモ アプリケーションで 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 を呼び出してハンドルを取得します。 D3D_DRIVER_TYPED3D_DRIVER_TYPE_SOFTWAREの場合は NULL 以外、それ以外の場合は NULL にする必要があります。

Flags

型: UINT

有効にするランタイム レイヤー ( D3D11_CREATE_DEVICE_FLAGを参照)。値は、ビットごとの OR'd を一緒に使用できます。

[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を使用 します

[in, optional] pSwapChainDesc

型: const DXGI_SWAP_CHAIN_DESC*

スワップ チェーンの初期化パラメーターを含むスワップ チェーンの説明 ( DXGI_SWAP_CHAIN_DESCを参照) へのポインター。

[out, optional] ppSwapChain

種類: IDXGISwapChain**

レンダリングに使用されるスワップ チェーンを表す IDXGISwapChain オブジェクトへのポインターのアドレスを返します。

[out, optional] ppDevice

種類: ID3D11Device**

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

[out, optional] pFeatureLevel

種類: D3D_FEATURE_LEVEL*

デバイスでサポートされている機能レベルの配列の最初の要素を表す、 D3D_FEATURE_LEVELへのポインターを返します。 サポートされている機能レベルを決定する必要がない場合は、入力として NULL を 指定します。

[out, optional] ppImmediateContext

種類: ID3D11DeviceContext**

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

戻り値

種類: HRESULT

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

セッション 0 プロセスで び出した場合、このメソッドはDXGI_ERROR_NOT_CURRENTLY_AVAILABLEを返します。

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

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

解説

メモ セッション 0 プロセスでこのメソッドを呼び出すと、 DXGI_ERROR_NOT_CURRENTLY_AVAILABLEが返されます。
 
このエントリ ポイントは、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 インターフェイスを取得するために ID3D11Device オブジェクトの QueryInterface メソッドを呼び出します。

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

また、入力パラメーターの依存関係の詳細については、 D3D11CreateDevice の「解説」セクションを参照してください。 スワップ チェーンを作成せずにデバイスを作成するには、 D3D11CreateDevice 関数を 使用します。

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

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

使用状況に関するメモ

メモD3D11CreateDeviceAndSwapChain 関数は、Windows ストア アプリには存在しません。 代わりに、Windows ストア アプリは D3D11CreateDevice 関数を使用し、 IDXGIFactory2::CreateSwapChainForCoreWindow メソッドを使用します。
 
メモ この関数は、スワップ チェーン作成の最近の追加機能をサポートするように更新されていません。 最新のスワップ チェーンの作成方法については、 IDXGIFactory2 のメソッド ( CreateSwapChainForHwndCreateSwapChainForCoreWindowCreateSwapChainForComposition など) を参照してください。
 
Windows Phone 8: この API はサポートされています。

必要条件

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

関連項目

コア関数