Win32 API 日本語リファレンス
ホーム › Graphics.Direct3D11 › PFN_D3D11_CREATE_DEVICE

PFN_D3D11_CREATE_DEVICE

コールバック

シグネチャ

HRESULT PFN_D3D11_CREATE_DEVICE(
    IDXGIAdapter* param0,
    D3D_DRIVER_TYPE param1,
    HMODULE param2,
    DWORD param3,
    D3D_FEATURE_LEVEL* param4,
    DWORD FeatureLevels,
    DWORD param6,
    ID3D11Device** param7,
    D3D_FEATURE_LEVEL* param8,
    ID3D11DeviceContext** param9
);

パラメーター

フィールド型説明
param0IDXGIAdapter*
param1D3D_DRIVER_TYPE
param2HMODULE
param3DWORD
param4D3D_FEATURE_LEVEL*
FeatureLevelsDWORDpFeatureLevels の要素数です。
param6DWORD
param7ID3D11Device**
param8D3D_FEATURE_LEVEL*
param9ID3D11DeviceContext**

公式ドキュメント

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

戻り値

型: HRESULT

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

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

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

解説(Remarks)

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

Windows 8、Windows Server 2012、および Platform Update for Windows 7 を適用した Windows 7 と Windows Server 2008 R2 で利用できる Direct3D 11.1 デバイス (ID3D11Device1) を作成するには、まずこの関数で ID3D11Device を作成し、その ID3D11Device オブジェクトに対して QueryInterface メソッドを呼び出して ID3D11Device1 インターフェイスを取得します。

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 は E_INVALIDARG の HRESULT を返します。

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 を設定することはできず、次のいずれかになります。

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

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

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

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)