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 によって列挙された最初のアダプターです。
DriverType
種類: D3D_DRIVER_TYPE
D3D_DRIVER_TYPE。作成するドライバーの種類を表します。
Software
種類: HMODULE
ソフトウェア ラスタライザーを実装する DLL へのハンドル。 DriverType がD3D_DRIVER_TYPE_SOFTWARE場合、ソフトウェアは NULL にすることはできません。 LoadLibrary、LoadLibraryEx、または GetModuleHandle を呼び出してハンドルを取得します。 D3D_DRIVER_TYPEがD3D_DRIVER_TYPE_SOFTWAREの場合は NULL 以外、それ以外の場合は NULL にする必要があります。
Flags
型: UINT
有効にするランタイム レイヤー ( D3D11_CREATE_DEVICE_FLAGを参照)。値は、ビットごとの OR'd を一緒に使用できます。
[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を使用 します。
[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 をインストールして、正しいバージョンを取得します。
解説
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) を使用できます。
使用状況に関するメモ
必要条件
対象プラットフォーム | Windows |
ヘッダー | d3d11.h |
Library | D3D11.lib |
[DLL] | D3D11.dll |