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

ID3D11Device2

COM
IID9d06dffa-d1e5-4d07-83a8-1bb123f2f841継承元ID3D11Device1自前メソッド開始 vtbl50

公式ドキュメント

デバイスインターフェイスは仮想アダプターを表し、リソースの作成に使用します。ID3D11Device2 は ID3D11Device1 のメソッドに新しいメソッドを追加します。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 50 void GetImmediateContext2(ID3D11DeviceContext2** ppImmediateContext)

コマンドリストを再生できるイミディエイトコンテキストを取得します。(ID3D11Device2.GetImmediateContext2)

ppImmediateContextID3D11DeviceContext2**outメソッドが完了すると、渡された ID3D11DeviceContext2 インターフェイスポインターへのポインターが初期化されます。

解説(Remarks)

GetImmediateContext2 メソッドは、イミディエイトコンテキストを表す ID3D11DeviceContext2 オブジェクトを返します。イミディエイトコンテキストは、デバイスに即座に送信したいレンダリングを実行するために使用します。ほとんどのアプリでは、イミディエイトコンテキストがシーンの描画に使用する主要なオブジェクトになります。

GetImmediateContext2 メソッドは、イミディエイトコンテキストの参照カウントを 1 つ増やします。そのため、メモリリークを避けるには、返されたインターフェイスポインターの使用が終わったときに Release を呼び出す必要があります。

vtbl 51 HRESULT CreateDeferredContext2(DWORD ContextFlags, ID3D11DeviceContext2** ppDeferredContext)

コマンドリストを記録できる遅延コンテキストを作成します。(ID3D11Device2.CreateDeferredContext2)

ContextFlagsDWORDin将来使用するために予約されています。 0 を渡してください。
ppDeferredContextID3D11DeviceContext2**outoptionalメソッドが完了すると、渡された ID3D11DeviceContext2 インターフェイスポインターへのポインターが初期化されます。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、次のいずれかを返します。

解説(Remarks)

遅延コンテキストはスレッドセーフなコンテキストであり、メインのレンダリングスレッド以外のスレッドでグラフィックスコマンドを記録するために使用できます。 遅延コンテキストを使用すると、ID3D11CommandList インターフェイスによってカプセル化されるコマンドリストにグラフィックスコマンドを記録できます。 すべてのシーン項目を記録した後、それらを最終的なレンダリングのためにメインのレンダリングスレッドに送信できます。 このようにして、複数のスレッドにわたって並行してレンダリング処理を実行でき、マルチコア CPU の環境ではパフォーマンスが向上する可能性があります。

遅延コンテキストは複数作成できます。

注意 D3D11_CREATE_DEVICE_SINGLETHREADED の値を使用してデバイスを作成した場合、 CreateDeferredContext2DXGI_ERROR_INVALID_CALL で失敗し、遅延コンテキストを作成できません。
遅延コンテキストの詳細については、イミディエイトレンダリングと遅延レンダリングを参照してください。
vtbl 52 void GetResourceTiling(ID3D11Resource* pTiledResource, DWORD* pNumTilesForEntireResource, D3D11_PACKED_MIP_DESC* pPackedMipDesc, D3D11_TILE_SHAPE* pStandardTileShapeForNonPackedMips, DWORD* pNumSubresourceTilings, DWORD FirstSubresourceTilingToGet, D3D11_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips)

タイル化リソースがどのようにタイルに分割されているかについての情報を取得します。(ID3D11Device2.GetResourceTiling)

pTiledResourceID3D11Resource*in情報を取得する対象のタイル化リソースへのポインター。
pNumTilesForEntireResourceDWORD*outoptionalタイル化リソース全体を格納するのに必要なタイル数を受け取る変数へのポインター。
pPackedMipDescD3D11_PACKED_MIP_DESC*outoptionalタイル化リソースのミップマップがどのようにパックされているかについての情報を GetResourceTiling が設定する D3D11_PACKED_MIP_DESC 構造体へのポインター。
pStandardTileShapeForNonPackedMipsD3D11_TILE_SHAPE*outoptionalタイル形状についての情報を GetResourceTiling が設定する D3D11_TILE_SHAPE 構造体へのポインター。これは、パックされたミップマップを除き、タイル化リソースの寸法とは無関係に、ピクセルがタイル内にどのように収まるかについての情報です。タイル化リソース全体がパックされている場合は、パックされたミップマップに対して定義されたレイアウトがタイル化リソースに存在しないため、このパラメーターは意味を持ちません。 この場合、GetResourceTilingD3D11_TILE_SHAPE のメンバーを 0 に設定します。
pNumSubresourceTilingsDWORD*inoutoptionalサブリソース内のタイル数を格納する変数へのポインター。入力時にはタイル情報を照会するサブリソースの数を指定し、出力時には pSubresourceTilingsForNonPackedMips に実際に取得された数(利用可能な数に制限されます)が格納されます。
FirstSubresourceTilingToGetDWORDin取得する最初のサブリソースタイルの番号。pNumSubresourceTilings が指す数値が 0 の場合、GetResourceTiling はこのパラメーターを無視します。
pSubresourceTilingsForNonPackedMipsD3D11_SUBRESOURCE_TILING*out

サブリソースタイルについての情報を GetResourceTiling が設定する D3D11_SUBRESOURCE_TILING 構造体へのポインター。

サブリソースタイルがパックされたミップマップの一部である場合、GetResourceTilingD3D11_SUBRESOURCE_TILING のメンバーを 0 に設定します。ただし StartTileIndexInOverallResource メンバーは例外で、GetResourceTiling はこれを D3D11_PACKED_TILE (0xffffffff) に設定します。D3D11_PACKED_TILE 定数は、この状況では D3D11_SUBRESOURCE_TILING 構造体全体が意味を持たず、pPackedMipDesc パラメーターが指す情報が適用されることを示します。

解説(Remarks)

タイル化リソースの詳細については、タイル化リソースを参照してください。

vtbl 53 HRESULT CheckMultisampleQualityLevels1(DXGI_FORMAT Format, DWORD SampleCount, DWORD Flags, DWORD* pNumQualityLevels)

マルチサンプリング時に利用可能な品質レベルの数を取得します。(ID3D11Device2.CheckMultisampleQualityLevels1)

FormatDXGI_FORMATinマルチサンプリング時のテクスチャフォーマット。
SampleCountDWORDinマルチサンプリング時のサンプル数。
FlagsDWORDinビットごとの OR 演算で組み合わせた D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAGS 値の組み合わせ。現在サポートされているのは D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_TILED_RESOURCE のみです。
pNumQualityLevelsDWORD*outアダプターがサポートする品質レベルの数を受け取る変数へのポインター。「解説」を参照してください。

戻り値

型: HRESULT

このメソッドは Direct3D 11 の戻り値コードのいずれかを返します。

解説(Remarks)

テクスチャをマルチサンプリングする場合、アダプターで利用可能な品質レベルの数は、使用するテクスチャフォーマットと要求するサンプル数によって決まります。品質レベルの最大数は D3D11.h の D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT で定義されます。このメソッドが 0 を返した場合、そのフォーマットとサンプル数の組み合わせは、インストールされているアダプターではサポートされていません。

さらに、品質レベルの定義は各ハードウェアベンダーに委ねられていますが、この情報を確認するための機能は Direct3D では提供されていません。

FEATURE_LEVEL_10_1 のデバイスは、R32G32B32A32 と R32G32B32 を除くすべてのレンダーターゲットで 4x MSAA をサポートする必要があります。 FEATURE_LEVEL_11_0 のデバイスは、すべてのレンダーターゲットフォーマットで 4x MSAA を、R32G32B32A32 系フォーマットを除くすべてのレンダーターゲットフォーマットで 8x MSAA をサポートする必要があります。

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

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID3D11Device2 "{9D06DFFA-D1E5-4D07-83A8-1BB123F2F841}"
#usecom global ID3D11Device2 IID_ID3D11Device2 "{}"
#comfunc global ID3D11Device2_GetImmediateContext2            50 sptr
#comfunc global ID3D11Device2_CreateDeferredContext2          51 int,sptr
#comfunc global ID3D11Device2_GetResourceTiling               52 sptr,var,var,var,var,int,var
#comfunc global ID3D11Device2_CheckMultisampleQualityLevels1  53 int,int,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。