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

ID3D11DeviceContext

COM
IIDc0bfa96c-e089-44fb-8eaf-26f8796190da継承元ID3D11DeviceChild自前メソッド開始 vtbl7

公式ドキュメント

ID3D11DeviceContext インターフェイスは、レンダリングコマンドを生成するデバイスコンテキストを表します。

メソッド 108

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

vtbl 7 void VSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

頂点シェーダーパイプラインステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 4*32 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 4*32 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

アプリケーションがシェーダーからバッファーの他の部分にアクセスさせたい場合は、代わりに VSSetConstantBuffers1 メソッドを呼び出す必要があります。

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

vtbl 8 void PSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列をピクセルシェーダーステージにバインドします。(ID3D11DeviceContext.PSSetShaderResources)

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、この API は対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 9 void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

ピクセルシェーダーをデバイスに設定します。(ID3D11DeviceContext.PSSetShader)

pPixelShaderID3D11PixelShader*inoptionalピクセルシェーダーへのポインター (ID3D11PixelShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

シェーダーでインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。NULL でない場合、クラスインスタンスの数はシェーダーで使用されるインターフェイスの数と一致している必要があります。さらに、各インターフェイスポインターには対応するクラスインスタンスが必要で、そうでない場合は割り当てたシェーダーが無効になります。

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

vtbl 10 void PSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列をピクセルシェーダーパイプラインステージに設定します。(ID3D11DeviceContext.PSSetSamplers)

StartSlotDWORDinサンプラーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。

ステート 既定値
Filter D3D11_FILTER_MIN_MAG_MIP_LINEAR
AddressU D3D11_TEXTURE_ADDRESS_CLAMP
AddressV D3D11_TEXTURE_ADDRESS_CLAMP
AddressW D3D11_TEXTURE_ADDRESS_CLAMP
MipLODBias 0
MaxAnisotropy 1
ComparisonFunc D3D11_COMPARISON_NEVER
BorderColor[0] 1.0f
BorderColor[1] 1.0f
BorderColor[2] 1.0f
BorderColor[3] 1.0f
MinLOD -FLT_MAX
MaxLOD FLT_MAX

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 11 void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

頂点シェーダーをデバイスに設定します。(ID3D11DeviceContext.VSSetShader)

pVertexShaderID3D11VertexShader*inoptional頂点シェーダーへのポインター (ID3D11VertexShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

vtbl 12 void DrawIndexed(DWORD IndexCount, DWORD StartIndexLocation, INT BaseVertexLocation)

インデックス付きの非インスタンス化プリミティブを描画します。(ID3D11DeviceContext.DrawIndexed)

IndexCountDWORDin描画するインデックスの数。
StartIndexLocationDWORDinGPU がインデックスバッファーから読み取る最初のインデックスの位置。
BaseVertexLocationINTin頂点バッファーから頂点を読み取る前に、各インデックスに加算される値。

解説(Remarks)

描画 API は、レンダリングパイプラインに処理を送信します。

両方のインデックスの合計が負になる場合、この関数呼び出しの結果は未定義です。

vtbl 13 void Draw(DWORD VertexCount, DWORD StartVertexLocation)

インデックスなし・非インスタンス化のプリミティブを描画します。(ID3D11DeviceContext.Draw)

VertexCountDWORDin描画する頂点の数。
StartVertexLocationDWORDin最初の頂点のインデックス。通常は頂点バッファー内のオフセットになります。

解説(Remarks)

Draw は、レンダリングパイプラインに処理を送信します。

描画呼び出しの頂点データは、通常、パイプラインにバインドされた頂点バッファーから供給されます。

頂点バッファーをパイプラインにバインドしていない場合でも、SV_VertexID システム値セマンティクスを使用してランタイムが処理中の現在の頂点を判別することで、頂点シェーダー内で独自の頂点データを生成できます。

vtbl 14 HRESULT Map(ID3D11Resource* pResource, DWORD Subresource, D3D11_MAP MapType, DWORD MapFlags, D3D11_MAPPED_SUBRESOURCE* pMappedResource)

サブリソースに含まれるデータへのポインターを取得し、そのサブリソースへの GPU のアクセスを禁止します。

pResourceID3D11Resource*inID3D11Resource インターフェイスへのポインター。
SubresourceDWORDinサブリソースのインデックス番号。
MapTypeD3D11_MAPinリソースに対する CPU の読み取り/書き込み権限を指定する D3D11_MAP 型の値。
MapFlagsDWORDinGPU がビジー状態のときに CPU が何を行うかを指定するフラグ。このフラグは省略可能です。
pMappedResourceD3D11_MAPPED_SUBRESOURCE*outoptionalマップされたサブリソースの D3D11_MAPPED_SUBRESOURCE 構造体へのポインター。 NULL ポインターについては「解説」セクションを参照してください。

戻り値

型: HRESULT

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

また、MapFlagsD3D11_MAP_FLAG_DO_NOT_WAIT が指定されており、GPU がまだリソースの処理を終えていない場合、このメソッドは DXGI_ERROR_WAS_STILL_DRAWING を返します。

さらに、MapType が CPU による読み取りアクセスを許可しており、ビデオカードが取り外された場合には DXGI_ERROR_DEVICE_REMOVED を返します。

これらのエラーコードの詳細については、DXGI_ERROR を参照してください。

解説(Remarks)

遅延コンテキストで Map を呼び出す場合、MapType パラメーターに渡せるのは D3D11_MAP_WRITE_DISCARDD3D11_MAP_WRITE_NO_OVERWRITE、またはその両方のみです。それ以外の D3D11_MAP 型の値は遅延コンテキストではサポートされません。

注意 Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、動的な定数バッファーおよび動的バッファーのシェーダーリソースビュー (SRV) を D3D11_MAP_WRITE_NO_OVERWRITE でマップできます。Direct3D 11 以前のランタイムでは、マップできるのは頂点バッファーまたはインデックスバッファーに限られていました。Direct3D デバイスがこれらの機能をサポートしているかどうかを判別するには、ID3D11Device::CheckFeatureSupportD3D11_FEATURE_D3D11_OPTIONS とともに呼び出します。CheckFeatureSupport は、デバイスの機能を D3D11_FEATURE_DATA_D3D11_OPTIONS 構造体のメンバーに格納します。ここで関係するメンバーは MapNoOverwriteOnDynamicConstantBufferMapNoOverwriteOnDynamicBufferSRV です。
Map の使用方法については、方法: 動的リソースを使用するを参照してください。

pMappedResource の NULL ポインター

D3D11_USAGE_DEFAULT で作成されたテクスチャを指定し、即時コンテキストで API を呼び出す場合、pMappedResource パラメーターは NULL にできます。 これにより、D3D11_TEXTURE_LAYOUT_UNDEFINED を使用して作成された既定のテクスチャであってもマップできます。 この API 呼び出しの後、テクスチャには ID3D11DeviceContext3::WriteToSubresourceID3D11DeviceContext3::ReadFromSubresource を使用してアクセスできます。

書き込み用にマップしたサブリソースから読み取らないこと

MapType パラメーターに D3D11_MAP_WRITED3D11_MAP_WRITE_DISCARD、または D3D11_MAP_WRITE_NO_OVERWRITE を渡す場合、D3D11_MAPPED_SUBRESOURCEpData メンバーが指すサブリソースデータをアプリが読み取らないようにする必要があります。読み取ると著しいパフォーマンス低下を招く可能性があるためです。pData が指すメモリ領域は PAGE_WRITECOMBINE で割り当てられている場合があり、アプリはそのようなメモリに伴うすべての制約に従う必要があります。
注意

次の C++ コードでさえメモリから読み取りを行い、パフォーマンス低下を引き起こす可能性があります。これは、このコードが以下の x86 アセンブリコードに展開されうるためです。

C++ コード:

*((int*)MappedResource.pData) = 0;

x86 アセンブリコード:

AND DWORD PTR [EAX],0

適切な最適化設定と言語構文を用いて、このパフォーマンス低下を避けてください。たとえば、volatile ポインターを使用するか、コードサイズではなく実行速度を優先して最適化することで、xor 最適化を回避できます。

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

vtbl 15 void Unmap(ID3D11Resource* pResource, DWORD Subresource)

リソースへのポインターを無効化し、そのリソースへの GPU のアクセスを再び有効にします。

pResourceID3D11Resource*inID3D11Resource インターフェイスへのポインター。
SubresourceDWORDinアンマップするサブリソース。

解説(Remarks)

Unmap の使用方法については、方法: 動的リソースを使用するを参照してください。

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

vtbl 16 void PSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ピクセルシェーダーパイプラインステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Windows 8 以降のオペレーティングシステムで利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 432 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。 そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 432 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

シェーダーからバッファーの他の部分にアクセスできるようにするには、PSSetConstantBuffers ではなく PSSetConstantBuffers1 を呼び出します。 PSSetConstantBuffers1 には、追加のパラメーター pFirstConstantpNumConstants があります。

vtbl 17 void IASetInputLayout(ID3D11InputLayout* pInputLayout)

入力レイアウトオブジェクトを入力アセンブラーステージにバインドします。(ID3D11DeviceContext.IASetInputLayout)

pInputLayoutID3D11InputLayout*inoptional入力レイアウトオブジェクト (ID3D11InputLayout を参照) へのポインター。IA ステージが読み取る入力バッファーを記述します。

解説(Remarks)

入力レイアウトオブジェクトは、頂点バッファーのデータが IA パイプラインステージにどのようにストリーミングされるかを記述します。入力レイアウトオブジェクトを作成するには、ID3D11Device::CreateInputLayout を呼び出します。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 18 void IASetVertexBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppVertexBuffers, DWORD* pStrides, DWORD* pOffsets)

頂点バッファーの配列を入力アセンブラーステージにバインドします。(ID3D11DeviceContext.IASetVertexBuffers)

StartSlotDWORDinバインドを開始する最初の入力スロット。最初の頂点バッファーは開始スロットに明示的にバインドされ、配列内の以降の各頂点バッファーは後続の入力スロットに暗黙的にバインドされます。入力スロットは最大 16 個または 32 個利用できます (範囲は 0 から D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1)。入力スロットの最大数は機能レベルによって異なります
NumBuffersDWORDin配列内の頂点バッファーの数。バッファー数 (と開始スロットの合計) は、IA ステージの入力スロットの総数を超えることはできません (範囲は 0 から D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppVertexBuffersID3D11Buffer**inoptional頂点バッファーの配列へのポインター (ID3D11Buffer を参照)。頂点バッファーは D3D11_BIND_VERTEX_BUFFER フラグを指定して作成されている必要があります。
pStridesDWORD*inoptionalストライド値の配列へのポインター。頂点バッファー配列内の各バッファーにつき 1 つのストライド値を指定します。各ストライドは、その頂点バッファーから使用される要素のサイズ (バイト単位) です。
pOffsetsDWORD*inoptionalオフセット値の配列へのポインター。頂点バッファー配列内の各バッファーにつき 1 つのオフセット値を指定します。各オフセットは、頂点バッファーの先頭要素から実際に使用される最初の要素までのバイト数です。

解説(Remarks)

頂点バッファーの作成については、方法: 頂点バッファーを作成するを参照してください。

現在書き込み用にバインドされている (つまりストリーム出力パイプラインステージにバインドされている) バッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力に同時にバインドできないため、実際には NULL がバインドされます。

リソースが入力と出力に同時にバインドされるのを防いだ場合、デバッグレイヤーは警告を生成しますが、無効なデータがランタイムで使用されるのを防ぐわけではありません。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

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

vtbl 19 void IASetIndexBuffer(ID3D11Buffer* pIndexBuffer, DXGI_FORMAT Format, DWORD Offset)

インデックスバッファーを入力アセンブラーステージにバインドします。(ID3D11DeviceContext.IASetIndexBuffer)

pIndexBufferID3D11Buffer*inoptionalインデックスを含む ID3D11Buffer オブジェクトへのポインター。インデックスバッファーは D3D11_BIND_INDEX_BUFFER フラグを指定して作成されている必要があります。
FormatDXGI_FORMATinインデックスバッファー内のデータの形式を指定する DXGI_FORMAT。インデックスバッファーのデータに使用できる形式は、16 ビット (DXGI_FORMAT_R16_UINT) と 32 ビット (DXGI_FORMAT_R32_UINT) の整数のみです。
OffsetDWORDinインデックスバッファーの先頭から、使用する最初のインデックスまでのオフセット (バイト単位)。

解説(Remarks)

インデックスバッファーの作成については、方法: インデックスバッファーを作成するを参照してください。

現在書き込み用にバインドされている (つまりストリーム出力パイプラインステージにバインドされている) バッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力に同時にバインドできないため、実際には NULL がバインドされます。

リソースが入力と出力に同時にバインドされるのを防いだ場合、デバッグレイヤーは警告を生成しますが、無効なデータがランタイムで使用されるのを 防ぐわけではありません。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

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

vtbl 20 void DrawIndexedInstanced(DWORD IndexCountPerInstance, DWORD InstanceCount, DWORD StartIndexLocation, INT BaseVertexLocation, DWORD StartInstanceLocation)

インデックス付きのインスタンス化プリミティブを描画します。(ID3D11DeviceContext.DrawIndexedInstanced)

IndexCountPerInstanceDWORDinインスタンスごとにインデックスバッファーから読み取るインデックスの数。
InstanceCountDWORDin描画するインスタンスの数。
StartIndexLocationDWORDinGPU がインデックスバッファーから読み取る最初のインデックスの位置。
BaseVertexLocationINTin頂点バッファーから頂点を読み取る前に、各インデックスに加算される値。
StartInstanceLocationDWORDin頂点バッファーからインスタンスごとのデータを読み取る前に、各インデックスに加算される値。

解説(Remarks)

描画 API は、レンダリングパイプラインに処理を送信します。

インスタンシングは、同一のジオメトリを再利用してシーン内の複数のオブジェクトを描画することで、パフォーマンスを向上させられる場合があります。インスタンシングの例としては、同じオブジェクトを異なる位置・色で描画することが挙げられます。インスタンシングには複数の頂点バッファーが必要です。少なくとも 1 つは頂点ごとのデータ用、もう 1 つはインスタンスごとのデータ用です。

2 つ目のバッファーが必要になるのは、使用する入力レイアウトに、インスタンスごとのデータ用の入力要素分類として D3D11_INPUT_PER_INSTANCE_DATA を使用する要素が含まれる場合のみです。

vtbl 21 void DrawInstanced(DWORD VertexCountPerInstance, DWORD InstanceCount, DWORD StartVertexLocation, DWORD StartInstanceLocation)

インデックスなしのインスタンス化プリミティブを描画します。(ID3D11DeviceContext.DrawInstanced)

VertexCountPerInstanceDWORDin描画する頂点の数。
InstanceCountDWORDin描画するインスタンスの数。
StartVertexLocationDWORDin最初の頂点のインデックス。
StartInstanceLocationDWORDin頂点バッファーからインスタンスごとのデータを読み取る前に、各インデックスに加算される値。

解説(Remarks)

描画 API は、レンダリングパイプラインに処理を送信します。

インスタンシングは、同一のジオメトリを再利用してシーン内の複数のオブジェクトを描画することで、パフォーマンスを向上させられる場合があります。インスタンシングの例としては、 同じオブジェクトを異なる位置・色で描画することが挙げられます。

インスタンス化された描画呼び出しの頂点データは、通常、パイプラインにバインドされた頂点バッファーから供給されます。 ただし、システム値セマンティクス (SV_InstanceID) で識別されるインスタンスデータを持つシェーダーから頂点データを供給することもできます。

vtbl 22 void GSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ジオメトリシェーダーパイプラインステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

ID3D11ShaderReflectionConstantBuffer インターフェイスを使用して、デバイスコンテキストのパイプラインに現在バインドされているものの情報を取得することはできません。ただし、ID3D11ShaderReflectionConstantBuffer を使用して、コンパイル済みシェーダーから情報を取得することはできます。たとえば、ID3D11ShaderReflectionConstantBufferID3D11ShaderReflectionVariable を使用して、ジオメトリシェーダーが定数バッファーを期待するスロットを判別できます。そして、そのスロット番号を GSSetConstantBuffers に渡して定数バッファーを設定できます。D3D11Reflect 関数を呼び出して ID3D11ShaderReflection インターフェイスへのポインターのアドレスを取得し、続いて ID3D11ShaderReflection::GetConstantBufferByName を呼び出して ID3D11ShaderReflectionConstantBuffer へのポインターを取得できます。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 432 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 432 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

アプリケーションがシェーダーからバッファーの他の部分にアクセスさせたい場合は、代わりに GSSetConstantBuffers1 メソッドを呼び出す必要があります。

vtbl 23 void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

ジオメトリシェーダーをデバイスに設定します。(ID3D11DeviceContext.GSSetShader)

pShaderID3D11GeometryShader*inoptionalジオメトリシェーダーへのポインター (ID3D11GeometryShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

vtbl 24 void IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY Topology)

入力アセンブラーステージの入力データを記述する、プリミティブの種類とデータの並び順の情報をバインドします。(ID3D11DeviceContext.IASetPrimitiveTopology)

TopologyD3D_PRIMITIVE_TOPOLOGYinプリミティブの種類とプリミティブデータの並び順 (D3D11_PRIMITIVE_TOPOLOGY を参照)。

解説(Remarks)

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

vtbl 25 void VSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列を頂点シェーダーステージにバインドします。

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、この API は対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

リソーススロットのバインドを解除するには、null 値を含む配列を渡す必要があります。たとえば、最初の 4 スロットをクリアするには次のようにします。

ID3D11ShaderResourceView* nullsrv[] = { nullptr, nullptr, nullptr, nullptr };
context->VSSetShaderResources(0, 4, nullsrv);
vtbl 26 void VSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列を頂点シェーダーパイプラインステージに設定します。(ID3D11DeviceContext.VSSetSamplers)

StartSlotDWORDinサンプラーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。


//Default sampler state:
D3D11_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
SamplerDesc.BorderColor[0] = 1.0f;
SamplerDesc.BorderColor[1] = 1.0f;
SamplerDesc.BorderColor[2] = 1.0f;
SamplerDesc.BorderColor[3] = 1.0f;
SamplerDesc.MinLOD = -FLT_MAX;
SamplerDesc.MaxLOD = FLT_MAX;
        

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 27 void Begin(ID3D11Asynchronous* pAsync)

一連のコマンドの開始位置を示します。

pAsyncID3D11Asynchronous*inID3D11Asynchronous インターフェイスへのポインター。

解説(Remarks)

一連のコマンドの終了位置を示すには、ID3D11DeviceContext::End を使用します。

vtbl 28 void End(ID3D11Asynchronous* pAsync)

一連のコマンドの終了位置を示します。

pAsyncID3D11Asynchronous*inID3D11Asynchronous インターフェイスへのポインター。

解説(Remarks)

一連のコマンドの開始位置を示すには、ID3D11DeviceContext::Begin を使用します。

vtbl 29 HRESULT GetData(ID3D11Asynchronous* pAsync, void* pData, DWORD DataSize, DWORD GetDataFlags)

グラフィックスプロセッシングユニット (GPU) から非同期にデータを取得します。

pAsyncID3D11Asynchronous*inGetData がデータを取得する対象オブジェクトの ID3D11Asynchronous インターフェイスへのポインター。
pDatavoid*outoptionalデータを受け取るメモリのアドレス。NULL の場合、GetData は状態の確認のみに使用されます。出力されるデータの型は、非同期インターフェイスの種類によって異なります。
DataSizeDWORDin取得するデータのサイズ、または 0。pDataNULL の場合は 0 でなければなりません。
GetDataFlagsDWORDin省略可能なフラグ。0、または D3D11_ASYNC_GETDATA_FLAG で列挙されるフラグの任意の組み合わせを指定できます。

戻り値

型: HRESULT

このメソッドは Direct3D 11 のリターンコードのいずれかを返します。戻り値 S_OK は、pData のデータを呼び出し元アプリケーションが利用できることを示します。戻り値 S_FALSE は、データがまだ利用できないことを示します。データがまだ利用できない場合、アプリケーションはデータが利用可能になるまで GetData を呼び出し続ける必要があります。

解説(Remarks)

遅延コンテキストにおけるクエリは、述語付き描画に限定されます。つまり、遅延コンテキストで ID3D11DeviceContext::GetData を呼び出してクエリのデータを取得することはできません。クエリのデータを取得できるのは即時コンテキストでの GetData 呼び出しのみです。述語付き描画では、述語型クエリの結果は GPU によって使用され、アプリケーションには返されません。述語と述語付き描画の詳細については、D3D11DeviceContext::SetPredication を参照してください。

GetData は、ID3D11DeviceContext::BeginID3D11DeviceContext::End の呼び出しの間にランタイムが収集したデータを取得します。一部のクエリは ID3D11DeviceContext::End の呼び出しのみを必要とし、その場合 GetData が返すデータは最後の ID3D11DeviceContext::End 呼び出し時点まで正確です。ID3D11DeviceContext::End の呼び出しのみを必要とするクエリ、および GetData が各クエリに対して取得するデータの型については、D3D11_QUERY を参照してください。

DataSize が 0 の場合、GetData は状態の確認のみに使用されます。

アプリケーションは、ID3D11DeviceContext::Begin を呼び出し、いくつかのグラフィックスコマンドを発行し、ID3D11DeviceContext::End を呼び出した後、ID3D11DeviceContext::GetData を呼び出して、BeginEnd の間に何が起きたかに関するデータを取得することで、カウンターデータを収集します。パフォーマンスカウンターの種類については、D3D11_COUNTER を参照してください。

vtbl 30 void SetPredication(ID3D11Predicate* pPredicate, BOOL PredicateValue)

レンダリング述語を設定します。(ID3D11DeviceContext.SetPredication)

pPredicateID3D11Predicate*inoptionalレンダリング述語を表す ID3D11Predicate インターフェイスへのポインター。NULL は述語なしを意味します。この場合 PredicateValue の値は無関係ですが、ID3D11DeviceContext::GetPredication のために保持されます。
PredicateValueBOOLinTRUE の場合、述語の条件が満たされたときにレンダリングが影響を受けます。FALSE の場合、条件が満たされないときにレンダリングが影響を受けます。

解説(Remarks)

述語を述語付き処理に使用するには、述語が「issued」または「signaled」の状態でなければなりません。述語が述語付き処理用に設定されている間は、ID3D11DeviceContext::Begin および ID3D11DeviceContext::End の呼び出しは無効です。

このメソッドを使用すると、述語の結果データが PredicateValue と等しい場合に、以降のレンダリングおよびリソース操作コマンドを実際には実行しないよう指定できます。ただし、一部の述語はヒントにすぎないため、実際には処理の実行を妨げないことがあります。

述語付き処理の主な利点は、ID3D11DeviceContext::GetData の戻りをスピン待ちするというパフォーマンス上の代償を払うことなく、アプリケーションがレンダリングおよびリソース操作コマンドを発行できる点にあります。したがって、ID3D11DeviceContext::GetDataS_FALSE を返している間も述語付き処理は行えます。別の見方をすれば、ID3D11DeviceContext::GetDataS_FALSE を返す可能性がある場合のフォールバックとしてアプリケーションが述語付き処理を利用できるということです。ID3D11DeviceContext::GetDataS_OK を返す場合、アプリケーションは独自のロジックにより、レンダリングおよびリソース操作コマンドの呼び出しを手動でスキップできます。

Direct3D 11 のレンダリングおよびリソース操作コマンドには、次の Draw、Dispatch、Copy、Update、Clear、Generate、Resolve の各操作が含まれます。

レンダリング述語は、即時コンテキストまたは遅延コンテキストのいずれにも設定できます。即時コンテキストと遅延コンテキストの詳細については、即時レンダリングと遅延レンダリングを参照してください。
vtbl 31 void GSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列をジオメトリシェーダーステージにバインドします。(ID3D11DeviceContext.GSSetShaderResources)

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、このメソッドは対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 32 void GSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列をジオメトリシェーダーパイプラインステージに設定します。(ID3D11DeviceContext.GSSetSamplers)

StartSlotDWORDinサンプラーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。


//Default sampler state:
D3D11_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
SamplerDesc.BorderColor[0] = 1.0f;
SamplerDesc.BorderColor[1] = 1.0f;
SamplerDesc.BorderColor[2] = 1.0f;
SamplerDesc.BorderColor[3] = 1.0f;
SamplerDesc.MinLOD = -FLT_MAX;
SamplerDesc.MaxLOD = FLT_MAX;
        

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 33 void OMSetRenderTargets(DWORD NumViews, ID3D11RenderTargetView** ppRenderTargetViews, ID3D11DepthStencilView* pDepthStencilView)

1 つ以上のレンダーターゲットと深度ステンシルバッファーを、出力マージャーステージにアトミックにバインドします。

NumViewsDWORDinバインドするレンダーターゲットの数 (範囲は 0 から D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT)。このパラメーターが 0 以外の場合、ppRenderTargetViews が指す配列の要素数はこのパラメーターの値と一致している必要があります。
ppRenderTargetViewsID3D11RenderTargetView**inoptionalデバイスにバインドするレンダーターゲットを表す ID3D11RenderTargetView の配列へのポインター。 このパラメーターが NULLNumViews が 0 の場合、レンダーターゲットはバインドされません。
pDepthStencilViewID3D11DepthStencilView*inoptionalデバイスにバインドする深度ステンシルビューを表す ID3D11DepthStencilView へのポインター。 このパラメーターが NULL の場合、深度ステンシルビューはバインドされません。

解説(Remarks)

デバイスが同時にアクティブにできるレンダーターゲットの最大数は、D3D11.h 内の D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT という #define で定義されています。同じサブリソースを複数のレンダーターゲットスロットに設定することはできません。 この呼び出しで指定されなかったレンダーターゲットは NULL に設定されます。

いずれかのサブリソースが、別のステージで読み取り用に、あるいは (パイプラインの別の箇所で) 書き込み用に現在バインドされている場合、 1 回のレンダリング操作で同一のサブリソースが同時に読み書きされるのを防ぐため、それらのバインドポイントは NULL に設定されます。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

レンダーターゲットビューが配列リソース型から作成されている場合、すべてのレンダーターゲットビューの配列サイズが同一である必要があります。 この制約は深度ステンシルビューにも適用され、その配列サイズはバインドされるレンダーターゲットビューの配列サイズと一致していなければなりません。

ピクセルシェーダーは、少なくとも 8 個の独立したレンダーターゲットへ同時にレンダリングできる必要があります。これらのレンダーターゲットはすべて同じ種類のリソースにアクセスしなければなりません。すなわち、BufferTexture1DTexture1DArrayTexture2DTexture2DArrayTexture3DTextureCube のいずれかです。すべてのレンダーターゲットは、すべての次元 (幅と高さ、および 3D の場合は深度、*Array 型の場合は配列サイズ) で同じサイズでなければなりません。レンダーターゲットでマルチサンプルアンチエイリアシングを使用する場合、バインドされるすべてのレンダーターゲットと深度バッファーは同じ形式のマルチサンプルリソース (すなわちサンプル数が同一) でなければなりません。各レンダーターゲットは異なるデータ形式を持つことができます。これらのレンダーターゲット形式は、要素あたりのビット数が同一である必要はありません。

レンダーターゲット用の 8 個のスロットは、任意の組み合わせでレンダーターゲットを設定したり、しなかったりできます。

同一のリソースビューを複数のレンダーターゲットスロットに同時にバインドすることはできません。ただし、1 つのリソースの重複しない複数のリソースビューを、同時に複数のレンダーターゲットとして設定することは可能です。

Direct3D の他の一部のリソース関連メソッドとは異なり、OMSetRenderTargets(0, nullptr, nullptr); を呼び出すと、現在バインドされているすべてのレンダーターゲットのバインドが解除される点に注意してください。

vtbl 34 void OMSetRenderTargetsAndUnorderedAccessViews(DWORD NumRTVs, ID3D11RenderTargetView** ppRenderTargetViews, ID3D11DepthStencilView* pDepthStencilView, DWORD UAVStartSlot, DWORD NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews, DWORD* pUAVInitialCounts)

リソースを出力マージャーステージにバインドします。

NumRTVsDWORDinバインドするレンダーターゲットの数 (範囲は 0 から D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT)。このパラメーターが 0 以外の場合、ppRenderTargetViews が指す配列の要素数はこのパラメーターの値と一致している必要があります。NumRTVsD3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff) を設定した場合、このメソッドは現在バインドされているレンダーターゲットビュー (RTV) も深度ステンシルビュー (DSV) も変更しません。
ppRenderTargetViewsID3D11RenderTargetView**inoptionalデバイスにバインドするレンダーターゲットを表す ID3D11RenderTargetView の配列へのポインター。 このパラメーターが NULLNumRTVs が 0 の場合、レンダーターゲットはバインドされません。
pDepthStencilViewID3D11DepthStencilView*inoptionalデバイスにバインドする深度ステンシルビューを表す ID3D11DepthStencilView へのポインター。 このパラメーターが NULL の場合、深度ステンシルビューはバインドされません。
UAVStartSlotDWORDin

アンオーダードアクセスビューの設定を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_PS_CS_UAV_REGISTER_COUNT - 1)。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、この値は 0 から D3D11_1_UAV_SLOT_COUNT - 1 の範囲を取れます。D3D11_1_UAV_SLOT_COUNT は 64 と定義されています。

ピクセルシェーダーの場合、UAVStartSlot はバインドされるレンダーターゲットビューの数と等しくする必要があります。

NumUAVsDWORDin

ppUnorderedAccessViews 内のアンオーダードアクセスビュー (UAV) の数。NumUAVsD3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff) を設定した場合、このメソッドは現在バインドされているアンオーダードアクセスビューを変更しません。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、この値は 0 から D3D11_1_UAV_SLOT_COUNT - UAVStartSlot の範囲を取れます。

ppUnorderedAccessViewsID3D11UnorderedAccessView**inoptionalデバイスにバインドするアンオーダードアクセスビューを表す ID3D11UnorderedAccessView の配列へのポインター。 このパラメーターが NULLNumUAVs が 0 の場合、アンオーダードアクセスビューはバインドされません。
pUAVInitialCountsDWORD*inoptionalappend/consume バッファーのオフセットの配列。値 -1 は現在のオフセットを維持することを示します。それ以外の値は、その append/consume 可能な UAV の隠しカウンターを設定します。pUAVInitialCounts は、UAV 作成時に D3D11_BUFFER_UAV_FLAG_APPEND または D3D11_BUFFER_UAV_FLAG_COUNTER を指定して作成された UAV に対してのみ意味を持ちます。 それ以外の場合、この引数は無視されます。

解説(Remarks)

ピクセルシェーダーでは、レンダーターゲットとアンオーダードアクセスビューは出力時に同じリソーススロットを共有します。そのため、UAV にはオフセットを与え、 バインドされるレンダーターゲットビューの後ろのスロットに配置する必要があります。

注意 RTV、DSV、UAV を個別に設定することはできません。これらはすべて同時に設定する必要があります。
2 つの RTV は、サブリソースを共有する (したがって同じリソースを共有する) 場合に競合します。

2 つの UAV は、サブリソースを共有する (したがって同じリソースを共有する) 場合に競合します。

RTV と UAV は、サブリソースを共有するか、バインドポイントを共有する場合に競合します。

OMSetRenderTargetsAndUnorderedAccessViews は、次の状況で正しく動作します。

  1. NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL かつ NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS の場合

    OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。

    • NumRTVs <= 8
    • UAVStartSlot >= NumRTVs
    • UAVStartSlot + NumUAVs <= 8
    • ppRenderTargetViewsppUnorderedAccessViews の全体の集合に競合がないこと。
    • ppDepthStencilView がレンダーターゲットビューと一致すること。リソースビューの詳細については、Direct3D 11 のリソース概要を参照してください。
    OMSetRenderTargetsAndUnorderedAccessViews は次の処理を行います。
    • 現在バインドされている競合するリソース (ストリーム出力ターゲットリソース (SOTargets)、コンピュートシェーダー (CS) UAV、シェーダーリソースビュー (SRV)) をすべてアンバインドします。
    • ppRenderTargetViewsppDepthStencilViewppUnorderedAccessViews をバインドします。
  2. NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL の場合

    この状況では、OMSetRenderTargetsAndUnorderedAccessViews は UAV のみをバインドします。

    OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。

    • UAVStartSlot + NumUAVs <= 8
    • ppUnorderedAccessViews 内に競合がないこと。
    OMSetRenderTargetsAndUnorderedAccessViews は次の項目をアンバインドします。
    • スロット番号が UAVStartSlot 以上のすべての RTV
    • ppUnorderedAccessViews 内のいずれかの UAV と競合するすべての RTV
    • ppUnorderedAccessViews と競合する、現在バインドされているすべてのリソース (SOTargets、CS UAV、SRV)
    OMSetRenderTargetsAndUnorderedAccessViewsppUnorderedAccessViews をバインドします。

    OMSetRenderTargetsAndUnorderedAccessViewsppDepthStencilView を無視し、現在の深度ステンシルビューはバインドされたままになります。

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS の場合

    この状況では、OMSetRenderTargetsAndUnorderedAccessViews は RTV と DSV のみをバインドします。

    OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。

    • NumRTVs <= 8
    • ppRenderTargetViews 内に競合がないこと。
    • ppDepthStencilView がレンダーターゲットビューと一致すること。リソースビューの詳細については、Direct3D 11 のリソース概要を参照してください。
    OMSetRenderTargetsAndUnorderedAccessViews は次の項目をアンバインドします。
    • スロット番号が NumRTVs 未満のすべての UAV
    • ppRenderTargetViews 内のいずれかの RTV と競合するすべての UAV
    • ppRenderTargetViews と競合する、現在バインドされているすべてのリソース (SOTargets、CS UAV、SRV)
    OMSetRenderTargetsAndUnorderedAccessViewsppRenderTargetViewsppDepthStencilView をバインドします。

    OMSetRenderTargetsAndUnorderedAccessViewsUAVStartSlot を無視します。

Windows Phone 8: この API はサポートされています。
vtbl 35 void OMSetBlendState(ID3D11BlendState* pBlendState, FLOAT* BlendFactor, DWORD SampleMask)

出力マージャーステージのブレンドステートを設定します。(ID3D11DeviceContext.OMSetBlendState)

pBlendStateID3D11BlendState*inoptionalブレンドステートインターフェイスへのポインター (ID3D11BlendState を参照)。既定のブレンドステートを使用するには NULL を渡します。既定のブレンドステートの詳細については「解説」を参照してください。
BlendFactorFLOAT*inoptionalRGBA の各コンポーネントに 1 つずつ対応するブレンド係数の配列。ブレンド係数は、ピクセルシェーダー、レンダーターゲット、またはその両方の値を変調します。ブレンドステートオブジェクトを D3D11_BLEND_BLEND_FACTOR または D3D11_BLEND_INV_BLEND_FACTOR を指定して作成した場合、ブレンドステージは NULL でないブレンド係数の配列を使用します。D3D11_BLEND_BLEND_FACTOR または D3D11_BLEND_INV_BLEND_FACTOR を指定せずにブレンドステートオブジェクトを作成した場合、ブレンドステージは NULL でないブレンド係数の配列を使用しません。この場合ランタイムはブレンド係数を保存し、後で ID3D11DeviceContext::OMGetBlendState を呼び出して取得できます。NULL を渡した場合、ランタイムは { 1, 1, 1, 1 } のブレンド係数を使用または保存します。
SampleMaskDWORDin32 ビットのサンプルカバレッジ。既定値は 0xffffffff です。「解説」を参照してください。

解説(Remarks)

ブレンドステートは、2 つの RGB ピクセル値と 2 つのアルファ値をどのようにブレンドするかを決定するために出力マージャーステージで使用されます。この 2 つの RGB ピクセル値とアルファ値とは、ピクセルシェーダーが出力する RGB ピクセル値・アルファ値と、出力先のレンダーターゲットに既に存在する RGB ピクセル値・アルファ値です。ブレンドオプションは、ブレンドステージがピクセルシェーダー、レンダーターゲット、またはその両方の値を変調する際に使用するデータソースを制御します。ブレンド演算は、ブレンドステージがこれらの変調された値を数学的にどのように組み合わせるかを制御します。

ブレンドステートインターフェイスを作成するには、ID3D11Device::CreateBlendState を呼び出します。

ブレンドステートインターフェイスに NULL を渡すと、ランタイムは既定のブレンドステートを設定します。既定のブレンドパラメーターを次の表に示します。

ステート 既定値
AlphaToCoverageEnable FALSE
IndependentBlendEnable FALSE
RenderTarget[0].BlendEnable FALSE
RenderTarget[0].SrcBlend D3D11_BLEND_ONE
RenderTarget[0].DestBlend D3D11_BLEND_ZERO
RenderTarget[0].BlendOp D3D11_BLEND_OP_ADD
RenderTarget[0].SrcBlendAlpha D3D11_BLEND_ONE
RenderTarget[0].DestBlendAlpha D3D11_BLEND_ZERO
RenderTarget[0].BlendOpAlpha D3D11_BLEND_OP_ADD
RenderTarget[0].RenderTargetWriteMask D3D11_COLOR_WRITE_ENABLE_ALL

サンプルマスクは、アクティブなすべてのレンダーターゲットにおいて、どのサンプルが更新されるかを決定します。サンプルマスクのビットとマルチサンプルレンダーターゲットのサンプルとの対応付けは、個々のアプリケーションの責任です。サンプルマスクは常に適用されます。マルチサンプリングが有効かどうかとは無関係であり、アプリケーションがマルチサンプルレンダーターゲットを使用しているかどうかにも依存しません。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 36 void OMSetDepthStencilState(ID3D11DepthStencilState* pDepthStencilState, DWORD StencilRef)

出力マージャーステージの深度ステンシルステートを設定します。(ID3D11DeviceContext.OMSetDepthStencilState)

pDepthStencilStateID3D11DepthStencilState*inoptionalデバイスにバインドする深度ステンシルステートインターフェイスへのポインター (ID3D11DepthStencilState を参照)。D3D11_DEPTH_STENCIL_DESC に記載された既定のステートを使用するには NULL を設定します。
StencilRefDWORDin深度ステンシルテストを行う際に比較対象とする参照値。「解説」を参照してください。

解説(Remarks)

深度ステンシルステートインターフェイスを作成するには、ID3D11Device::CreateDepthStencilState を呼び出します。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 37 void SOSetTargets(DWORD NumBuffers, ID3D11Buffer** ppSOTargets, DWORD* pOffsets)

パイプラインのストリーム出力ステージの出力先バッファーを設定します。

NumBuffersDWORDinデバイスにバインドするバッファーの数。出力バッファーは最大 4 つ設定できます。呼び出しで 4 つ未満しか指定しなかった場合、残りのバッファースロットは NULL に設定されます。「解説」を参照してください。
ppSOTargetsID3D11Buffer**inoptionalデバイスにバインドする出力バッファーの配列 (ID3D11Buffer を参照)。これらのバッファーは D3D11_BIND_STREAM_OUTPUT フラグを指定して作成されている必要があります。
pOffsetsDWORD*inoptionalppSOTargets の各出力バッファーに対するオフセットの配列 (バッファーごとに 1 つ)。オフセット値はバイト単位で指定します。

解説(Remarks)

オフセットに -1 を指定すると、ストリーム出力バッファーは追記モードとなり、前回のストリーム出力パスでバッファーに最後に書き込まれた位置の続きから書き込まれます。

現在書き込み用にバインドされているバッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力に同時にバインドできないため、実際には NULL がバインドされます。

リソースが入力と出力に同時にバインドされるのを防いだ場合、デバッグレイヤーは警告を生成しますが、無効なデータがランタイムで使用されるのを防ぐわけではありません。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Direct3D の他の一部のリソース関連メソッドとは異なり、SOSetTargets(0, nullptr, nullptr); を呼び出すと、現在バインドされているすべてのターゲットのバインドが解除される点に注意してください。

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

vtbl 38 void DrawAuto()

サイズが不明なジオメトリを描画します。

解説(Remarks)

描画 API は、レンダリングパイプラインに処理を送信します。この API は、入力アセンブラー、頂点シェーダー、ストリーム出力の各ステージで処理された、サイズが不明な処理を送信します。この処理は、ジオメトリシェーダーステージを経由している場合もあれば、していない場合もあります。

データがストリーム出力ステージのバッファーへ書き出された後、それらのバッファーを再び入力アセンブラーステージの入力スロット 0 にバインドでき、DrawAuto は、バッファーに書き込まれたデータ量をアプリケーションが知らなくてもそれらを描画します。SO ステージのバッファーに書き込まれたデータ量は、データが書き出される際に内部で計測・保持されます。つまり、書き出されたデータを入力データとして再バインドする前に、CPU が計測値を取得する必要はありません。この量は内部で追跡されますが、バッファーが再び入力アセンブラーにバインドされたときにレイアウトが利用できるよう、SO ステージのバッファー内データの形式を入力レイアウトで記述するのは、依然としてアプリケーションの責任です。

次の図は DrawAuto の処理の流れを示しています。

Diagram of DrawAuto as data moves through several stages to a buffer and then back to the Input Assembler stage

DrawAuto を呼び出しても、入力として再バインドされたストリーム出力バッファーの状態は変化しません。

DrawAuto が機能するのは、入力バッファーが 1 つだけスロット 0 で IA ステージの入力としてバインドされて描画される場合のみです。アプリケーションは、SO バッファーリソースを D3D11_BIND_VERTEX_BUFFERD3D11_BIND_STREAM_OUTPUT の両方のバインドフラグを指定して作成する必要があります。

この API は、インデックス付き描画やインスタンシングをサポートしません。

アプリケーションがストリーム出力バッファーのサイズを取得する必要がある場合は、D3D11_QUERY_SO_STATISTICS を使用してストリーム出力の統計情報をクエリできます。

vtbl 39 void DrawIndexedInstancedIndirect(ID3D11Buffer* pBufferForArgs, DWORD AlignedByteOffsetForArgs)

インデックス付き・インスタンス化された、GPU 生成のプリミティブを描画します。

pBufferForArgsID3D11Buffer*inID3D11Buffer へのポインター。GPU 生成のプリミティブを含むバッファーです。
AlignedByteOffsetForArgsDWORDinpBufferForArgs 内の、GPU 生成プリミティブの開始位置までの DWORD 境界に整列したバイトオフセット。

解説(Remarks)

pBufferForArgs が指す ID3D11Buffer インターフェイスに関連付けられるバッファーを作成する際、アプリケーションはそのバッファーを記述する D3D11_BUFFER_DESC 構造体の MiscFlags メンバーに D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS フラグを設定する必要があります。バッファーを作成するには、ID3D11Device::CreateBuffer メソッドを呼び出し、pDesc パラメーターに D3D11_BUFFER_DESC へのポインターを渡します。

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

vtbl 40 void DrawInstancedIndirect(ID3D11Buffer* pBufferForArgs, DWORD AlignedByteOffsetForArgs)

インスタンス化された、GPU 生成のプリミティブを描画します。

pBufferForArgsID3D11Buffer*inID3D11Buffer へのポインター。GPU 生成のプリミティブを含むバッファーです。
AlignedByteOffsetForArgsDWORDinpBufferForArgs 内の、GPU 生成プリミティブの開始位置までのオフセット。

解説(Remarks)

pBufferForArgs が指す ID3D11Buffer インターフェイスに関連付けられるバッファーを作成する際、アプリケーションはそのバッファーを記述する D3D11_BUFFER_DESC 構造体の MiscFlags メンバーに D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS フラグを設定する必要があります。バッファーを作成するには、アプリケーションは ID3D11Device::CreateBuffer メソッドを呼び出し、その呼び出しの pDesc パラメーターに D3D11_BUFFER_DESC へのポインターを渡します。

vtbl 41 void Dispatch(DWORD ThreadGroupCountX, DWORD ThreadGroupCountY, DWORD ThreadGroupCountZ)

スレッドグループからコマンドリストを実行します。

ThreadGroupCountXDWORDinx 方向にディスパッチされるグループの数。ThreadGroupCountXD3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535) 以下でなければなりません。
ThreadGroupCountYDWORDiny 方向にディスパッチされるグループの数。ThreadGroupCountYD3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535) 以下でなければなりません。
ThreadGroupCountZDWORDinz 方向にディスパッチされるグループの数。ThreadGroupCountZD3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535) 以下でなければなりません。 機能レベル 10 では、ThreadGroupCountZ の値は 1 でなければなりません。

解説(Remarks)

コンピュートシェーダー内のコマンドを実行するには Dispatch メソッドを呼び出します。コンピュートシェーダーは、スレッドグループ内の多数のスレッドで並列に実行できます。スレッドグループ内の特定のスレッドは、(x,y,z) で与えられる 3D ベクトルでインデックス指定します。

次の図では、グループのサイズが (5,5,2) で与えられる 50 スレッドのスレッドグループを想定しています。50 個のスレッドを含むスレッドグループから、ベクトル (4,1,1) を用いて単一のスレッドが特定されます。

Illustration of a single thread within a thread group of 50 threads

次の図は、ID3D11DeviceContext::Dispatch に渡されるパラメーター Dispatch(5,3,2) と、numthreads 属性で指定された値 numthreads(10,8,3)、およびスレッド関連のシステム値 (SV_GroupIndexSV_DispatchThreadIDSV_GroupThreadIDSV_GroupID) としてコンピュートシェーダーに渡される値との関係を示しています。

Illustration of the relationship between Dispatch, thread groups, and threads
vtbl 42 void DispatchIndirect(ID3D11Buffer* pBufferForArgs, DWORD AlignedByteOffsetForArgs)

1 つ以上のスレッドグループでコマンドリストを実行します。

pBufferForArgsID3D11Buffer*inID3D11Buffer へのポインター。ID3D11DeviceContext::Dispatch の引数リストに対応するデータが格納されている必要があります。
AlignedByteOffsetForArgsDWORDinバッファーの先頭から引数までの、バイト境界に整列したオフセット。

解説(Remarks)

コンピュートシェーダー内のコマンドを実行するには DispatchIndirect メソッドを呼び出します。

pBufferForArgs が指す ID3D11Buffer インターフェイスに関連付けられるバッファーを作成する際、アプリケーションはそのバッファーを記述する D3D11_BUFFER_DESC 構造体の MiscFlags メンバーに D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS フラグを設定する必要があります。バッファーを作成するには、アプリケーションは ID3D11Device::CreateBuffer メソッドを呼び出し、その呼び出しの pDesc パラメーターに D3D11_BUFFER_DESC へのポインターを渡します。

vtbl 43 void RSSetState(ID3D11RasterizerState* pRasterizerState)

パイプラインのラスタライザーステージにラスタライザーステートを設定します。(ID3D11DeviceContext.RSSetState)

pRasterizerStateID3D11RasterizerState*inoptionalパイプラインにバインドするラスタライザーステートインターフェイスへのポインター (ID3D11RasterizerState を参照)。

解説(Remarks)

ラスタライザーステートインターフェイスを作成するには、ID3D11Device::CreateRasterizerState を呼び出します。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 44 void RSSetViewports(DWORD NumViewports, D3D11_VIEWPORT* pViewports)

ビューポートの配列をパイプラインのラスタライザーステージにバインドします。(ID3D11DeviceContext.RSSetViewports)

NumViewportsDWORDinバインドするビューポートの数。
pViewportsD3D11_VIEWPORT*inoptionalデバイスにバインドする D3D11_VIEWPORT 構造体の配列。ビューポートのサイズがデバイスの機能レベルに依存すること (Direct3D 10 と Direct3D 11 で変更されている点) の詳細については、構造体のページを参照してください。

解説(Remarks)

すべてのビューポートは 1 回の操作でアトミックに設定する必要があります。呼び出しで指定されなかったビューポートは無効になります。

どのビューポートを使用するかは、ジオメトリシェーダーが出力する SV_ViewportArrayIndex セマンティクスによって決まります。ジオメトリシェーダーがこのセマンティクスを指定しない場合、Direct3D は配列の最初のビューポートを使用します。

注意 機能レベル 9_x において、ID3D11DeviceContext::RSSetViewports 呼び出しの pViewports 配列に対して D3D11_VIEWPORT 構造体のメンバーに float 値を指定しても、RSSetViewports は内部的に DWORD を使用します。この動作のため、ビューポートの左上隅に負の値を使用すると、機能レベル 9_x での RSSetViewports の呼び出しは失敗します。これは、9_x 用の RSSetViewports が浮動小数点値を検証せずに符号なし整数へキャストし、整数オーバーフローが発生するためです。
vtbl 45 void RSSetScissorRects(DWORD NumRects, RECT* pRects)

シザー矩形の配列をラスタライザーステージにバインドします。(ID3D11DeviceContext.RSSetScissorRects)

NumRectsDWORDinバインドするシザー矩形の数。
pRectsRECT*inoptionalシザー矩形の配列 (D3D11_RECT を参照)。

解説(Remarks)

すべてのシザー矩形は 1 回の操作でアトミックに設定する必要があります。呼び出しで指定されなかったシザー矩形は無効になります。

シザー矩形が使用されるのは、ラスタライザーステートで ScissorEnable が true に設定されている場合のみです (D3D11_RASTERIZER_DESC を参照)。

どのシザー矩形を使用するかは、ジオメトリシェーダーが出力する SV_ViewportArrayIndex セマンティクスによって決まります (シェーダーセマンティクスの構文を参照)。ジオメトリシェーダーが SV_ViewportArrayIndex セマンティクスを使用しない場合、Direct3D は配列の最初のシザー矩形を使用します。

配列内の各シザー矩形は、ビューポート配列内のビューポートに対応します (ID3D11DeviceContext::RSSetViewports を参照)。

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

vtbl 46 void CopySubresourceRegion(ID3D11Resource* pDstResource, DWORD DstSubresource, DWORD DstX, DWORD DstY, DWORD DstZ, ID3D11Resource* pSrcResource, DWORD SrcSubresource, D3D11_BOX* pSrcBox)

コピー元リソースの領域をコピー先リソースにコピーします。(ID3D11DeviceContext.CopySubresourceRegion)

pDstResourceID3D11Resource*inコピー先リソースへのポインター (ID3D11Resource を参照)。
DstSubresourceDWORDinコピー先のサブリソースインデックス。
DstXDWORDinコピー先領域の左上隅の x 座標。
DstYDWORDinコピー先領域の左上隅の y 座標。1D サブリソースの場合は 0 でなければなりません。
DstZDWORDinコピー先領域の左上隅の z 座標。1D または 2D サブリソースの場合は 0 でなければなりません。
pSrcResourceID3D11Resource*inコピー元リソースへのポインター (ID3D11Resource を参照)。
SrcSubresourceDWORDinコピー元のサブリソースインデックス。
pSrcBoxD3D11_BOX*inoptional

コピー可能なコピー元サブリソースの範囲を定義する 3D ボックスへのポインター (D3D11_BOX を参照)。NULL の場合、コピー元サブリソース全体がコピーされます。ボックスはコピー元リソースの範囲内に収まっている必要があります。

空のボックスを指定した場合は何も行われません。top の値が bottom の値以上、left の値が right の値以上、または front の値が back の値以上の場合、そのボックスは空です。ボックスが空の場合、CopySubresourceRegion はコピー操作を実行しません。

解説(Remarks)

コピー元ボックスは、コピー元リソースのサイズの範囲内でなければなりません。コピー先のオフセット (x、y、z) により、コピー先リソースへ書き込む際にコピー元ボックスをずらして配置できます。ただし、コピー元ボックスの寸法とオフセットは、リソースのサイズの範囲内でなければなりません。コピー先リソースの外側へコピーしようとしたり、コピー元リソースより大きなコピー元ボックスを指定したりした場合、CopySubresourceRegion の動作は未定義です。デバッグレイヤーをサポートするデバイスを作成している場合、この無効な CopySubresourceRegion の呼び出しに対してデバッグ出力がエラーを報告します。CopySubresourceRegion に無効なパラメーターを渡すと未定義の動作となり、不正なレンダリング、クリッピング、コピーの不実行、さらにはレンダリングデバイスの削除を招く場合があります。

リソースがバッファーの場合、すべての座標はバイト単位です。リソースがテクスチャの場合、すべての座標はテクセル単位です。D3D11CalcSubresource は、サブリソースインデックスを計算するためのヘルパー関数です。

CopySubresourceRegion は GPU 上でコピーを実行します (CPU による memcpy に相当します)。その結果、コピー元とコピー先のリソースには次の制約があります。

CopySubresourceRegion はコピーのみをサポートし、拡大縮小、カラーキー、ブレンドはサポートしません。CopySubresourceRegion は、一部の形式型の間でリソースデータを再解釈できます。詳細については、Direct3D 10.1 を使用した形式変換を参照してください。

リソース全体をコピーする必要がある場合は、代わりに ID3D11DeviceContext::CopyResource を使用することをお勧めします。

CopySubresourceRegion は非同期呼び出しであり、コマンドバッファーのキューに追加される場合があります。これにより、データのコピー時に発生しうるパイプラインストールの回避を図ります。パイプラインストールの詳細については、パフォーマンス上の考慮事項を参照してください。

注意 機能レベル 9_x のハードウェアにのみ適用されます ID3D11DeviceContext::UpdateSubresource または CopySubresourceRegion を使用してステージングリソースから既定のリソースへコピーすると、コピー先の内容が破損する場合があります。これは、コピー元ボックスに NULL を渡し、かつコピー元リソースの寸法がコピー先リソースの寸法と異なる場合、またはコピー先オフセット (x、y、z) を使用した場合に発生します。この状況では、常にコピー元リソース全体のサイズのコピー元ボックスを渡してください。
注意 機能レベル 9_x のハードウェアにのみ適用されます CopySubresourceRegion を使用してミップマップ付きのボリュームテクスチャをコピーすることはできません。
注意 機能レベル 9_x にのみ適用されます D3D11_BIND_DEPTH_STENCIL フラグを指定して作成されたサブリソースは、CopySubresourceRegion のコピー元としてのみ使用できます。
注意 深度ステンシルバッファーまたはマルチサンプルリソースに対して CopySubresourceRegion を使用する場合、サブリソース全体をコピーする必要があります。この状況では、DstXDstYDstZ パラメーターに 0 を、pSrcBox パラメーターに NULL を渡す必要があります。さらに、pSrcResourcepDstResource パラメーターで表されるコピー元・コピー先のリソースは、同一のサンプル数の値を持つ必要があります。

次のコードスニペットは、コピー元テクスチャ内のボックス ((120,100),(200,220) の位置) を、コピー先テクスチャの領域 (10,20),(90,140) へコピーします。
D3D11_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;

pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion );

2D テクスチャの場合、front と back はそれぞれ 0 と 1 に設定される点に注意してください。

vtbl 47 void CopyResource(ID3D11Resource* pDstResource, ID3D11Resource* pSrcResource)

GPU を使用して、コピー元リソースの内容全体をコピー先リソースにコピーします。(ID3D11DeviceContext.CopyResource)

pDstResourceID3D11Resource*inコピー先リソースを表す ID3D11Resource インターフェイスへのポインター。
pSrcResourceID3D11Resource*inコピー元リソースを表す ID3D11Resource インターフェイスへのポインター。

解説(Remarks)

このメソッドは、GPU にコピー操作を実行させる (CPU による memcpy に相当する) という点で特殊です。そのため、パフォーマンス向上を目的としたいくつかの制約があります。たとえば、コピー元とコピー先のリソースには次の制約があります。

CopyResource はコピーのみをサポートし、拡大縮小、カラーキー、ブレンドはサポートしません。CopyResource は、一部の形式型の間でリソースデータを再解釈できます。詳細については、Direct3D 10.1 を使用した形式変換を参照してください。

Immutable リソースをコピー先として使用することはできません。機能レベルが D3D_FEATURE_LEVEL_10_1 以上であれば、深度ステンシルリソースをコピー元・コピー先のいずれとしても使用できます。機能レベル 9_x では、D3D11_BIND_DEPTH_STENCIL フラグを指定して作成されたリソースは CopyResource のコピー元としてのみ使用できます。マルチサンプリング機能を有効にして作成されたリソース (DXGI_SAMPLE_DESC を参照) は、コピー元とコピー先の両方でマルチサンプルのカウントと品質が同一である場合にのみ、コピー元・コピー先として使用できます。コピー元とコピー先でマルチサンプルのカウントや品質が異なる場合、または一方のみがマルチサンプルの場合、ID3D11DeviceContext::CopyResource の呼び出しは失敗します。マルチサンプルリソースを非マルチサンプルのリソースへ解決するには、ID3D11DeviceContext::ResolveSubresource を使用してください。

このメソッドは非同期呼び出しであり、コマンドバッファーのキューに追加される場合があります。これにより、データのコピー時に発生しうるパイプラインストールの回避を図ります。詳細については、パフォーマンス上の考慮事項を参照してください。

リソース内のデータの一部のみをコピーする必要がある場合は、代わりに ID3D11DeviceContext::CopySubresourceRegion を使用することをお勧めします。

vtbl 48 void UpdateSubresource(ID3D11Resource* pDstResource, DWORD DstSubresource, D3D11_BOX* pDstBox, void* pSrcData, DWORD SrcRowPitch, DWORD SrcDepthPitch)

CPU がメモリから、マップ不可能なメモリ上に作成されたサブリソースへデータをコピーします。(ID3D11DeviceContext.UpdateSubresource)

pDstResourceID3D11Resource*inコピー先リソースへのポインター (ID3D11Resource を参照)。
DstSubresourceDWORDinコピー先サブリソースを識別する、0 から始まるインデックス。詳細については D3D11CalcSubresource を参照してください。
pDstBoxD3D11_BOX*inoptional

リソースデータのコピー先となるコピー先サブリソースの範囲を定義するボックスへのポインター。座標は、バッファーの場合はバイト単位、テクスチャの場合はテクセル単位です。NULL の場合、データはオフセットなしでコピー先サブリソースへ書き込まれます。コピー元の寸法はコピー先に収まる必要があります (D3D11_BOX を参照)。

空のボックスを指定した場合は何も行われません。top の値が bottom の値以上、left の値が right の値以上、または front の値が back の値以上の場合、そのボックスは空です。ボックスが空の場合、UpdateSubresource は更新操作を実行しません。

pSrcDatavoid*inメモリ上のコピー元データへのポインター。
SrcRowPitchDWORDinコピー元データの 1 行あたりのサイズ。
SrcDepthPitchDWORDinコピー元データの 1 深度スライスあたりのサイズ。

解説(Remarks)

シェーダー定数バッファーの場合は、pDstBoxNULL を設定します。このメソッドを使用してシェーダー定数バッファーを部分的に更新することはできません。

次の場合、リソースをコピー先として使用できません。

UpdateSubresource から制御が戻った時点で、メソッドは既に元の内容をコピー/退避しているため、アプリケーションは pSrcData が指すデータを自由に変更したり解放したりできます。

UpdateSubresource のパフォーマンスは、コピー先リソースに対する競合の有無に依存します。たとえば、アプリケーションが Draw 呼び出しを実行し、その Draw 呼び出しが実際に GPU で実行される前に同じ頂点バッファーに対して UpdateSubresource を呼び出すと、頂点バッファーリソースに対する競合が発生します。

注意 機能レベル 9_x のハードウェアにのみ適用されます UpdateSubresource または ID3D11DeviceContext::CopySubresourceRegion を使用してステージングリソースから既定のリソースへコピーすると、コピー先の内容が破損する場合があります。これは、コピー元ボックスに NULL を渡し、かつコピー元リソースの寸法がコピー先リソースの寸法と異なる場合、またはコピー先オフセット (x、y、z) を使用した場合に発生します。この状況では、常にコピー元リソース全体のサイズのコピー元ボックスを渡してください。
コピー元の行ピッチと深度ピッチのパラメーターをより深く理解するため、次の図に 3D ボリュームテクスチャを示します。 Illustration of a 3D volume texture

この図の各ブロックはデータの 1 要素を表しており、各要素のサイズはリソースの形式に依存します。たとえば、リソースの形式が DXGI_FORMAT_R32G32B32A32_FLOAT の場合、各要素のサイズは 128 ビット、すなわち 16 バイトになります。この 3D ボリュームテクスチャは、幅 2、高さ 3、深度 4 です。

特定のリソースに対するコピー元の行ピッチと深度ピッチを計算するには、次の式を使用します。

各要素のサイズが 16 バイトであるこの 3D ボリュームテクスチャの例では、式は次のようになります。 次の図は、このリソースがメモリ上に配置された様子を示しています。 Illustration of a 3D volume texture laid out in memory

たとえば、次のコードスニペットは 2D テクスチャ内でコピー先領域を指定する方法を示しています。コピー先テクスチャは 512x512 で、この操作は pData が指すデータをコピー先テクスチャの [(120,100)..(200,220)] へコピーするものとします。また、rowPitch は (前述のとおり) 適切な値で初期化済みであるとします。frontback はそれぞれ 0 と 1 に設定します。frontback を等しくすると、そのボックスは厳密には空になってしまうためです。


D3D11_BOX destRegion;
destRegion.left = 120;
destRegion.right = 200;
destRegion.top = 100;
destRegion.bottom = 220;
destRegion.front = 0;
destRegion.back = 1;

pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );

1D の場合も同様です。次のスニペットは 1D テクスチャ内でコピー先領域を指定する方法を示しています。テクスチャの長さが 512 である点を除き、前提は上記と同じです。


D3D11_BOX destRegion;
destRegion.left = 120;
destRegion.right = 200;
destRegion.top = 0;
destRegion.bottom = 1;
destRegion.front = 0;
destRegion.back = 1;

pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );

さまざまなリソース型と、各リソース型に対する UpdateSubresource の動作については、Direct3D 11 のリソース概要を参照してください。

遅延コンテキストでの UpdateSubresource の呼び出し

アプリケーションが遅延コンテキストで UpdateSubresource を呼び出す際、pDstBox が指すコピー先ボックスのオフセットが (0,0,0) 以外であり、かつドライバーがコマンドリストをサポートしていない場合、UpdateSubresource はそのコピー先ボックスのオフセットを不適切に pSrcData パラメーターへ適用してしまいます。この動作を回避するには、次のコードを使用します。

HRESULT UpdateSubresource_Workaround(
  ID3D11Device *pDevice,
  ID3D11DeviceContext *pDeviceContext,
  ID3D11Resource *pDstResource,
  UINT dstSubresource,
  const D3D11_BOX *pDstBox,
  const void *pSrcData,
  UINT srcBytesPerElement,
  UINT srcRowPitch,
  UINT srcDepthPitch,
  bool* pDidWorkAround )
{
     HRESULT hr = S_OK;
     bool needWorkaround = false;
     D3D11_DEVICE_CONTEXT_TYPE contextType = pDeviceContext->GetType();

     if( pDstBox && (D3D11_DEVICE_CONTEXT_DEFERRED == contextType) )
     {
          D3D11_FEATURE_DATA_THREADING threadingCaps = { FALSE, FALSE };

          hr = pDevice->CheckFeatureSupport( D3D11_FEATURE_THREADING, &threadingCaps, sizeof(threadingCaps) );
          if( SUCCEEDED(hr) )
          {
               if( !threadingCaps.DriverCommandLists )
               {
                    needWorkaround = true;
               }
          }
     }

     const void* pAdjustedSrcData = pSrcData;

     if( needWorkaround )
     {
          D3D11_BOX alignedBox = *pDstBox;
        
          // convert from pixels to blocks
          if( m_bBC )
          {
               alignedBox.left     /= 4;
               alignedBox.right    /= 4;
               alignedBox.top      /= 4;
               alignedBox.bottom   /= 4;
          }

          pAdjustedSrcData = ((const BYTE*)pSrcData) - (alignedBox.front * srcDepthPitch) - (alignedBox.top * srcRowPitch) - (alignedBox.left * srcBytesPerElement);
     }

     pDeviceContext->UpdateSubresource( pDstResource, dstSubresource, pDstBox, pAdjustedSrcData, srcRowPitch, srcDepthPitch );

     if( pDidWorkAround )
     {
          *pDidWorkAround = needWorkaround;
     }

     return hr;
}
vtbl 49 void CopyStructureCount(ID3D11Buffer* pDstBuffer, DWORD DstAlignedByteOffset, ID3D11UnorderedAccessView* pSrcView)

可変長データを保持するバッファーからデータをコピーします。

pDstBufferID3D11Buffer*inID3D11Buffer へのポインター。ID3D11DeviceContext::CopyResourceID3D11DeviceContext::CopySubresourceRegion などの他のコピーコマンドが書き込めるバッファーリソースであれば何でも指定できます。
DstAlignedByteOffsetDWORDinpSrcView から得られる 32 ビット UINT の構造体 (頂点) カウントを書き込む、pDstBuffer の先頭からのオフセット。
pSrcViewID3D11UnorderedAccessView*in構造化バッファーリソースの ID3D11UnorderedAccessView へのポインター。この UAV は、作成時に D3D11_BUFFER_UAV_FLAG_APPEND または D3D11_BUFFER_UAV_FLAG_COUNTER を指定して作成されている必要があります。これらの種類のリソースは、いくつのレコードが書き込まれたかを追跡する隠しカウンターを持ちます。
vtbl 50 void ClearRenderTargetView(ID3D11RenderTargetView* pRenderTargetView, FLOAT* ColorRGBA)

レンダーターゲットのすべての要素を 1 つの値に設定します。(ID3D11DeviceContext.ClearRenderTargetView)

pRenderTargetViewID3D11RenderTargetView*inレンダーターゲットへのポインター。
ColorRGBAFLOAT*inレンダーターゲットを塗りつぶす色を表す 4 要素の配列。

解説(Remarks)

特定の整数値のビットパターンでレンダーターゲットをクリアしたいアプリケーションは、このメソッドを使用せず、画面に合わせた矩形 (スクリーンアラインドクアッド) を描画してください。これは、このメソッドが入力として浮動小数点値を受け取るため、元の整数と同じビットパターンにならない可能性があるためです。

Direct3D 9 と Direct3D 11/10 の違い:

Direct3D 9 とは異なり、常にリソースビューの全範囲がクリアされます。ビューポートやシザーの設定は適用されません。

D3D_FEATURE_LEVEL_9_x を使用する場合、ClearRenderTargetView はレンダーターゲットビューの最初の配列スライスのみをクリアします。これは (たとえば) キューブマップのレンダリングシナリオに影響します。アプリケーションは面または配列スライスごとにレンダーターゲットビューを作成し、各ビューを個別にクリアする必要があります。

vtbl 51 void ClearUnorderedAccessViewUint(ID3D11UnorderedAccessView* pUnorderedAccessView, DWORD* Values)

アンオーダードアクセスリソースをビット単位で正確な値でクリアします。

pUnorderedAccessViewID3D11UnorderedAccessView*inクリアする ID3D11UnorderedAccessView
ValuesDWORD*in対応する各チャネルへコピーする値。「解説」を参照してください。

解説(Remarks)

この API は、配列の各要素 i の下位 ni ビットを対応するチャネルへコピーします。ここで ni は、リソース形式の i 番目のチャネルのビット数です (たとえば R8G8B8_FLOAT は最初の 3 チャネルが各 8 ビットです)。これは形式変換を伴わず、任意の UAV に対して機能します。 raw バッファービューまたは構造化バッファービューの場合は、配列の最初の要素の値のみが使用されます。

vtbl 52 void ClearUnorderedAccessViewFloat(ID3D11UnorderedAccessView* pUnorderedAccessView, FLOAT* Values)

アンオーダードアクセスリソースを float 値でクリアします。

pUnorderedAccessViewID3D11UnorderedAccessView*inクリアする ID3D11UnorderedAccessView
ValuesFLOAT*in対応する各チャネルへコピーする値。「解説」を参照してください。

解説(Remarks)

この API は FLOAT、UNORM、SNORM のアンオーダードアクセスビュー (UAV) に対して機能し、必要に応じて FLOAT から *NORM への形式変換が行われます。それ以外の UAV では操作は無効となり、呼び出しはドライバーに到達しません。

vtbl 53 void ClearDepthStencilView(ID3D11DepthStencilView* pDepthStencilView, DWORD ClearFlags, FLOAT Depth, BYTE Stencil)

深度ステンシルリソースをクリアします。(ID3D11DeviceContext.ClearDepthStencilView)

pDepthStencilViewID3D11DepthStencilView*inクリアする深度ステンシルへのポインター。
ClearFlagsDWORDinクリアするデータの種類を指定します (D3D11_CLEAR_FLAG を参照)。
DepthFLOATin深度バッファーをこの値でクリアします。この値は 0 から 1 の範囲にクランプされます。
StencilBYTEinステンシルバッファーをこの値でクリアします。

解説(Remarks)

Direct3D 9 と Direct3D 11/10 の違い:

Direct3D 9 とは異なり、常にリソースビューの全範囲がクリアされます。ビューポートやシザーの設定は適用されません。

vtbl 54 void GenerateMips(ID3D11ShaderResourceView* pShaderResourceView)

指定されたシェーダーリソースのミップマップを生成します。(ID3D11DeviceContext.GenerateMips)

pShaderResourceViewID3D11ShaderResourceView*inシェーダーリソースを表す ID3D11ShaderResourceView インターフェイスへのポインター。

解説(Remarks)

任意のシェーダーリソースビューに対して GenerateMips を呼び出すと、そのシェーダーリソースの下位のミップマップレベルを生成できます。GenerateMips は、ビューの最大のミップマップレベルを使用して再帰的に下位のミップレベルを生成し、ビューで指定された最小のレベルで停止します。ベースとなるリソースが D3D11_BIND_RENDER_TARGETD3D11_BIND_SHADER_RESOURCED3D11_RESOURCE_MISC_GENERATE_MIPS を指定して作成されていない場合、GenerateMips の呼び出しは何の効果もありません。

機能レベル 9.1、9.2、9.3 では、3D (ボリューム) テクスチャのミップマップ自動生成はサポートされません。

機能レベル 9.1 以上をサポートするビデオアダプターでは、次のいずれかの形式を使用する場合にミップマップ生成がサポートされます。


DXGI_FORMAT_R8G8B8A8_UNORM
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
DXGI_FORMAT_B5G6R5_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
DXGI_FORMAT_B8G8R8X8_UNORM
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB

機能レベル 9.2 以上をサポートするビデオアダプターでは、機能レベル 9.1 の形式に加え、次のいずれかの形式を使用する場合にミップマップ生成がサポートされます。


DXGI_FORMAT_R16G16B16A16_FLOAT
DXGI_FORMAT_R16G16B16A16_UNORM
DXGI_FORMAT_R16G16_FLOAT
DXGI_FORMAT_R16G16_UNORM
DXGI_FORMAT_R32_FLOAT

機能レベル 9.3 以上をサポートするビデオアダプターでは、機能レベル 9.1 および 9.2 の形式に加え、次のいずれかの形式を使用する場合にミップマップ生成がサポートされます。


DXGI_FORMAT_R32G32B32A32_FLOAT
DXGI_FORMAT_B4G4R4A4 (optional)

機能レベル 10 以上をサポートするビデオアダプターでは、機能レベル 9.1、9.2、9.3 の形式に加え、次のいずれかの形式を使用する場合にミップマップ生成がサポートされます。


DXGI_FORMAT_R32G32B32_FLOAT (optional)
DXGI_FORMAT_R16G16B16A16_SNORM
DXGI_FORMAT_R32G32_FLOAT
DXGI_FORMAT_R10G10B10A2_UNORM
DXGI_FORMAT_R11G11B10_FLOAT
DXGI_FORMAT_R8G8B8A8_SNORM
DXGI_FORMAT_R16G16_SNORM
DXGI_FORMAT_R8G8_UNORM
DXGI_FORMAT_R8G8_SNORM
DXGI_FORMAT_R16_FLOAT
DXGI_FORMAT_R16_UNORM
DXGI_FORMAT_R16_SNORM
DXGI_FORMAT_R8_UNORM
DXGI_FORMAT_R8_SNORM
DXGI_FORMAT_A8_UNORM
DXGI_FORMAT_B5G5R5A1_UNORM (optional)

サポートされていないその他のすべての形式では、GenerateMips は何も通知せずに失敗します。

vtbl 55 void SetResourceMinLOD(ID3D11Resource* pResource, FLOAT MinLOD)

リソースの最小詳細レベル (LOD) を設定します。

pResourceID3D11Resource*inリソースを表す ID3D11Resource へのポインター。
MinLODFLOATin詳細レベル。0 からリソースのミップマップレベルの最大数までの範囲を取ります。たとえば、1D テクスチャのミップマップレベルの最大数は、D3D11_TEXTURE1D_DESC 構造体の MipLevels メンバーで指定されます。

解説(Remarks)

SetResourceMinLOD でリソースを使用するには、そのリソースの作成時に D3D11_RESOURCE_MISC_RESOURCE_CLAMP フラグを設定する必要があります。

Direct3D 10 および Direct3D 10.1 では、シェーダー内でテクスチャリソースからサンプリングする際、サンプラーが最小 LOD クランプを定義して、より詳細度の低いミップレベルからのサンプリングを強制できました。Direct3D 11 では、この機能がサンプラーからリソース全体へと拡張されています。そのため、アプリケーションはアクセス可能なリソースの最高解像度のミップレベルを指定できます。これにより、GPU メモリ上に常駐させる必要があるミップレベルの集合が制限され、メモリを節約できます。

リソースごとに GPU メモリ上に常駐させるミップレベルの集合は、ユーザーが指定できます。

最小 LOD は常駐するすべてのミップレベルに影響します。したがって、更新および読み取りができるのは常駐しているミップレベルのみです。

テクスチャリソースにアクセスするすべてのメソッドは、最小 LOD クランプに従う必要があります。

空集合へのアクセスは、範囲外のケースとして扱われます。

vtbl 56 FLOAT GetResourceMinLOD(ID3D11Resource* pResource)

最小詳細レベル (LOD) を取得します。

pResourceID3D11Resource*inリソースを表す ID3D11Resource へのポインター。

戻り値

型: FLOAT

最小 LOD を返します。

vtbl 57 void ResolveSubresource(ID3D11Resource* pDstResource, DWORD DstSubresource, ID3D11Resource* pSrcResource, DWORD SrcSubresource, DXGI_FORMAT Format)

マルチサンプルリソースを非マルチサンプルのリソースへコピーします。

pDstResourceID3D11Resource*inコピー先リソース。D3D11_USAGE_DEFAULT フラグを指定して作成され、かつシングルサンプルでなければなりません。ID3D11Resource を参照してください。
DstSubresourceDWORDinコピー先サブリソースを識別する、0 から始まるインデックス。インデックスの計算には D3D11CalcSubresource を使用します。
pSrcResourceID3D11Resource*inコピー元リソース。マルチサンプルでなければなりません。
SrcSubresourceDWORDinコピー元リソースのコピー元サブリソース。
FormatDXGI_FORMATinマルチサンプルリソースをシングルサンプルのリソースへどのように解決するかを示す DXGI_FORMAT。 「解説」を参照してください。

解説(Remarks)

この API は、あるレンダーパスの結果であるレンダーターゲットを、次のレンダーパスの入力として再利用する場合に特に有用です。

コピー元とコピー先のリソースは、同じリソース型で同じ寸法でなければなりません。さらに、互換性のある形式を持つ必要があります。これには次の 3 つのシナリオがあります。

シナリオ 要件
コピー元とコピー先が構造化済みかつ型付き コピー元とコピー先の形式が同一であり、その形式を Format パラメーターで指定する必要があります。
一方が構造化済みかつ型付きで、もう一方が構造化済みかつ型なし 型付きリソースは、型なしリソースと互換性のある形式でなければなりません (たとえば、型付きリソースが DXGI_FORMAT_R32_FLOAT で型なしリソースが DXGI_FORMAT_R32_TYPELESS の場合)。型付きリソースの形式を Format パラメーターで指定する必要があります。
コピー元とコピー先が構造化済みかつ型なし コピー元とコピー先が同じ型なし形式でなければならず (たとえば両方が DXGI_FORMAT_R32_TYPELESS)、Format パラメーターにはコピー元・コピー先と互換性のある形式を指定する必要があります (たとえば両方が DXGI_FORMAT_R32_TYPELESS であれば、Format パラメーターに DXGI_FORMAT_R32_FLOAT を指定できます)。

たとえば、DXGI_FORMAT_R16G16B16A16_TYPELESS 形式の場合は次のようになります。

vtbl 58 void ExecuteCommandList(ID3D11CommandList* pCommandList, BOOL RestoreContextState)

コマンドリストのコマンドをデバイスにキューイングします。

pCommandListID3D11CommandList*inコマンドリストをカプセル化する ID3D11CommandList インターフェイスへのポインター。
RestoreContextStateBOOLinコマンドリストの実行前に対象コンテキストのステートを保存し、実行後に復元するかどうかを決定するブール値フラグ。ランタイムにステートの保存と復元を行わせるには TRUE を指定します。ステートの保存も復元も行わない場合は FALSE を指定します。この場合、コマンドリストの実行後、対象コンテキストは既定のステートに戻ります。TRUE を渡したときにランタイムが復元するステートとほぼ同等のステートを自ら復元する場合を除き、アプリケーションは通常 FALSE を使用すべきです。FALSE を使用すると、不要で非効率なステート遷移を避けられます。

解説(Remarks)

任意のスレッド上の遅延コンテキストで記録されたコマンドリストを再生するには、このメソッドを使用します。

記録されたコマンドをグラフィックスプロセッシングユニット (GPU) で実行するには、遅延コンテキストのコマンドリストを即時コンテキストに対して ExecuteCommandList で実行する必要があります。遅延コンテキストのコマンドリストを別の遅延コンテキストに対して ExecuteCommandList で実行することで、記録されたリストをマージできます。ただし、マージされた遅延コマンドリストのコマンドを GPU 上で実行するには、即時コンテキストで実行する必要があります。

このメソッドは、クエリに関するランタイム検証をいくつか行います。デバイスコンテキストで開始されたクエリを、コマンドリストの実行によって間接的に操作することはできません (すなわち、そのコマンドリストを生成した遅延コンテキストが同じクエリに対して Begin または End を呼び出していた場合)。そのような状況が発生した場合、ExecuteCommandList メソッドはコマンドリストを実行しません。ただし、デバイスコンテキストのステートは期待どおりに維持されます (アプリケーションがデバイスコンテキストのステートを保持するよう指定していない限り、ID3D11DeviceContext::ClearState が実行されます)。

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

vtbl 59 void HSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列をハルシェーダーステージにバインドします。

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、このメソッドは対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 60 void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

ハルシェーダーをデバイスに設定します。

pHullShaderID3D11HullShader*inoptionalハルシェーダーへのポインター (ID3D11HullShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

vtbl 61 void HSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列をハルシェーダーステージに設定します。

StartSlotDWORDinサンプラーの設定を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。


//Default sampler state:
D3D11_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
SamplerDesc.BorderColor[0] = 1.0f;
SamplerDesc.BorderColor[1] = 1.0f;
SamplerDesc.BorderColor[2] = 1.0f;
SamplerDesc.BorderColor[3] = 1.0f;
SamplerDesc.MinLOD = -FLT_MAX;
SamplerDesc.MaxLOD = FLT_MAX;
        

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 62 void HSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ハルシェーダーステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 432 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 432 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

アプリケーションがシェーダーからバッファーの他の部分にアクセスさせたい場合は、代わりに HSSetConstantBuffers1 メソッドを呼び出す必要があります。

vtbl 63 void DSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列をドメインシェーダーステージにバインドします。

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、このメソッドは対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 64 void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

ドメインシェーダーをデバイスに設定します。

pDomainShaderID3D11DomainShader*inoptionalドメインシェーダーへのポインター (ID3D11DomainShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

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

vtbl 65 void DSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列をドメインシェーダーステージに設定します。

StartSlotDWORDinサンプラーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。


//Default sampler state:
D3D11_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
SamplerDesc.BorderColor[0] = 1.0f;
SamplerDesc.BorderColor[1] = 1.0f;
SamplerDesc.BorderColor[2] = 1.0f;
SamplerDesc.BorderColor[3] = 1.0f;
SamplerDesc.MinLOD = -FLT_MAX;
SamplerDesc.MaxLOD = FLT_MAX;
        

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 66 void DSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ドメインシェーダーステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 432 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 432 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

アプリケーションがシェーダーからバッファーの他の部分にアクセスさせたい場合は、代わりに DSSetConstantBuffers1 メソッドを呼び出す必要があります。

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

vtbl 67 void CSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

シェーダーリソースの配列をコンピュートシェーダーステージにバインドします。

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**inoptionalデバイスに設定するシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

重複するリソースビューがレンダーターゲットなどの出力スロットに既にバインドされている場合、このメソッドは対象のシェーダーリソーススロットを NULL で埋めます。

シェーダーリソースビューの作成については、ID3D11Device::CreateShaderResourceView を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 68 void CSSetUnorderedAccessViews(DWORD StartSlot, DWORD NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews, DWORD* pUAVInitialCounts)

アンオーダードリソースのビューの配列を設定します。

StartSlotDWORDin設定を開始する、0 から始まる配列内の最初の要素のインデックス (範囲は 0 から D3D11_1_UAV_SLOT_COUNT - 1)。D3D11_1_UAV_SLOT_COUNT は 64 と定義されています。
NumUAVsDWORDin設定するビューの数 (範囲は 0 から D3D11_1_UAV_SLOT_COUNT - StartSlot)。
ppUnorderedAccessViewsID3D11UnorderedAccessView**inoptionalこのメソッドで設定する ID3D11UnorderedAccessView ポインターの配列へのポインター。
pUAVInitialCountsDWORD*inoptionalappend/consume バッファーのオフセットの配列。値 -1 は現在のオフセットを維持することを示します。それ以外の値は、その append/consume 可能な UAV の隠しカウンターを設定します。pUAVInitialCounts は、UAV 作成時に D3D11_BUFFER_UAV_FLAG_APPEND または D3D11_BUFFER_UAV_FLAG_COUNTER を指定して作成された UAV に対してのみ意味を持ちます。 それ以外の場合、この引数は無視されます。

解説(Remarks)

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

vtbl 69 void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, DWORD NumClassInstances)

コンピュートシェーダーをデバイスに設定します。

pComputeShaderID3D11ComputeShader*inoptionalコンピュートシェーダーへのポインター (ID3D11ComputeShader を参照)。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。
ppClassInstancesID3D11ClassInstance**inoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。シェーダーが使用する各インターフェイスには対応するクラスインスタンスが必要で、そうでない場合シェーダーは無効になります。シェーダーがインターフェイスを使用しない場合は、ppClassInstances に NULL を設定します。
NumClassInstancesDWORDin配列内のクラスインスタンスインターフェイスの数。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

シェーダーが持てるインスタンスの最大数は 256 です。

vtbl 70 void CSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

サンプラーステートの配列をコンピュートシェーダーステージに設定します。

StartSlotDWORDinサンプラーの設定を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDin配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**inoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。「解説」を参照してください。

解説(Remarks)

いずれのサンプラーにも NULL を設定できます。その場合は既定のステートが適用され、内容は次のとおりです。

//Default sampler state:
D3D11_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
SamplerDesc.BorderColor[0] = 1.0f;
SamplerDesc.BorderColor[1] = 1.0f;
SamplerDesc.BorderColor[2] = 1.0f;
SamplerDesc.BorderColor[3] = 1.0f;
SamplerDesc.MinLOD = -FLT_MAX;
SamplerDesc.MaxLOD = FLT_MAX;
        

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

vtbl 71 void CSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

コンピュートシェーダーステージで使用される定数バッファーを設定します。

StartSlotDWORDin定数バッファーの設定を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin設定するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**inoptionalデバイスに渡す定数バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持します。 これは Direct3D 10 のデバイスステートの動作とは異なります。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、シェーダーがサポートする最大定数バッファーサイズ (4096 定数、各 4*32 ビットコンポーネント) を超える大きさの ID3D11Buffer リソースをシェーダーにバインドできます。そのような大きなバッファーをバインドした場合、シェーダーはバッファーの先頭 4096 個の 4*32 ビットコンポーネント定数にのみアクセスでき、あたかも 4096 定数がバッファー全体のサイズであるかのように扱われます。

アプリケーションがシェーダーからバッファーの他の部分にアクセスさせたい場合は、代わりに CSSetConstantBuffers1 メソッドを呼び出す必要があります。

vtbl 72 void VSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

頂点シェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D11DeviceContext.VSGetConstantBuffers)

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 73 void PSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

ピクセルシェーダーのリソースを取得します。(ID3D11DeviceContext.PSGetShaderResources)

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 74 void PSGetShader(ID3D11PixelShader** ppPixelShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されているピクセルシェーダーを取得します。(ID3D11DeviceContext.PSGetShader)

ppPixelShaderID3D11PixelShader**outこのメソッドが返すピクセルシェーダーへのポインターのアドレス (ID3D11PixelShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

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

vtbl 75 void PSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

ピクセルシェーダーパイプラインステージからサンプラーステートの配列を取得します。(ID3D11DeviceContext.PSGetSamplers)

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalデバイスが返すサンプラーステートインターフェイスポインターの配列 (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 76 void VSGetShader(ID3D11VertexShader** ppVertexShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されている頂点シェーダーを取得します。(ID3D11DeviceContext.VSGetShader)

ppVertexShaderID3D11VertexShader**outこのメソッドが返す頂点シェーダーへのポインターのアドレス (ID3D11VertexShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 77 void PSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ピクセルシェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D11DeviceContext.PSGetConstantBuffers)

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 78 void IAGetInputLayout(ID3D11InputLayout** ppInputLayout)

入力アセンブラーステージにバインドされている入力レイアウトオブジェクトへのポインターを取得します。(ID3D11DeviceContext.IAGetInputLayout)

ppInputLayoutID3D11InputLayout**out入力レイアウトオブジェクトへのポインター (ID3D11InputLayout を参照)。IA ステージが読み取る入力バッファーを記述します。

解説(Remarks)

入力レイアウトオブジェクトの作成については、「入力レイアウトオブジェクトの作成」を参照してください。

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 79 void IAGetVertexBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppVertexBuffers, DWORD* pStrides, DWORD* pOffsets)

入力アセンブラーステージにバインドされている頂点バッファーを取得します。(ID3D11DeviceContext.IAGetVertexBuffers)

StartSlotDWORDin取得する最初の頂点バッファーの入力スロット。最初の頂点バッファーは開始スロットに明示的にバインドされ、配列内の以降の各頂点バッファーは後続の入力スロットに暗黙的にバインドされます。入力スロットは最大 16 個または 32 個利用できます (範囲は 0 から D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1)。入力スロットの最大数は機能レベルによって異なります
NumBuffersDWORDinオフセット位置から取得する頂点バッファーの数。バッファー数 (と開始スロットの合計) は、IA ステージの入力スロットの総数を超えることはできません。
ppVertexBuffersID3D11Buffer**outoptionalこのメソッドが返す頂点バッファーの配列へのポインター (ID3D11Buffer を参照)。
pStridesDWORD*outoptionalこのメソッドが返すストライド値の配列へのポインター。頂点バッファー配列内の各バッファーにつき 1 つのストライド値が返されます。各ストライド値は、その頂点バッファーから使用される要素のサイズ (バイト単位) です。
pOffsetsDWORD*outoptionalこのメソッドが返すオフセット値の配列へのポインター。頂点バッファー配列内の各バッファーにつき 1 つのオフセット値が返されます。各オフセットは、頂点バッファーの先頭要素から実際に使用される最初の要素までのバイト数です。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 80 void IAGetIndexBuffer(ID3D11Buffer** pIndexBuffer, DXGI_FORMAT* Format, DWORD* Offset)

入力アセンブラーステージにバインドされているインデックスバッファーへのポインターを取得します。(ID3D11DeviceContext.IAGetIndexBuffer)

pIndexBufferID3D11Buffer**outoptionalこのメソッドが返すインデックスバッファーへのポインター (ID3D11Buffer を参照)。
FormatDXGI_FORMAT*outoptionalインデックスバッファー内のデータの形式を示します (DXGI_FORMAT を参照)。これらの形式は、バッファー内のデータのサイズと型を表します。インデックスバッファーのデータに使用できる形式は、16 ビット (DXGI_FORMAT_R16_UINT) と 32 ビット (DXGI_FORMAT_R32_UINT) の整数のみです。
OffsetDWORD*outoptionalインデックスバッファーの先頭から、使用する最初のインデックスまでのオフセット (バイト単位)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 81 void GSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ジオメトリシェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D11DeviceContext.GSGetConstantBuffers)

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 82 void GSGetShader(ID3D11GeometryShader** ppGeometryShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されているジオメトリシェーダーを取得します。(ID3D11DeviceContext.GSGetShader)

ppGeometryShaderID3D11GeometryShader**outこのメソッドが返すジオメトリシェーダーへのポインターのアドレス (ID3D11GeometryShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 83 void IAGetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY* pTopology)

入力アセンブラーステージの入力データを記述する、プリミティブの種類とデータの並び順の情報を取得します。(ID3D11DeviceContext.IAGetPrimitiveTopology)

pTopologyD3D_PRIMITIVE_TOPOLOGY*outプリミティブの種類とプリミティブデータの並び順へのポインター (D3D11_PRIMITIVE_TOPOLOGY を参照)。
vtbl 84 void VSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

頂点シェーダーのリソースを取得します。(ID3D11DeviceContext.VSGetShaderResources)

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 85 void VSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

頂点シェーダーパイプラインステージからサンプラーステートの配列を取得します。(ID3D11DeviceContext.VSGetSamplers)

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalデバイスが返すサンプラーステートインターフェイスポインターの配列 (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 86 void GetPredication(ID3D11Predicate** ppPredicate, BOOL* pPredicateValue)

レンダリング述語の状態を取得します。(ID3D11DeviceContext.GetPredication)

ppPredicateID3D11Predicate**outoptional述語へのポインターのアドレス (ID3D11Predicate を参照)。デバイス作成時には NULL が格納されます。
pPredicateValueBOOL*outoptional述語の比較値を格納するブール値のアドレス。デバイス作成時は FALSE です。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 87 void GSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

ジオメトリシェーダーのリソースを取得します。(ID3D11DeviceContext.GSGetShaderResources)

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 88 void GSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

ジオメトリシェーダーパイプラインステージからサンプラーステートインターフェイスの配列を取得します。

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 89 void OMGetRenderTargets(DWORD NumViews, ID3D11RenderTargetView** ppRenderTargetViews, ID3D11DepthStencilView** ppDepthStencilView)

出力マージャーステージにバインドされているリソースへのポインターを取得します。(ID3D11DeviceContext.OMGetRenderTargets)

NumViewsDWORDin取得するレンダーターゲットの数。
ppRenderTargetViewsID3D11RenderTargetView**outoptionalレンダーターゲットビューを表す ID3D11RenderTargetView の配列へのポインター。レンダーターゲットの取得が不要な場合は、このパラメーターに NULL を指定します。
ppDepthStencilViewID3D11DepthStencilView**outoptional深度ステンシルビューを表す ID3D11DepthStencilView へのポインター。深度ステンシルビューの取得が不要な場合は、このパラメーターに NULL を指定します。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 90 void OMGetRenderTargetsAndUnorderedAccessViews(DWORD NumRTVs, ID3D11RenderTargetView** ppRenderTargetViews, ID3D11DepthStencilView** ppDepthStencilView, DWORD UAVStartSlot, DWORD NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews)

出力マージャーステージにバインドされているリソースへのポインターを取得します。(ID3D11DeviceContext.OMGetRenderTargetsAndUnorderedAccessViews)

NumRTVsDWORDin取得するレンダーターゲットビューの数。
ppRenderTargetViewsID3D11RenderTargetView**outoptionalレンダーターゲットビューを表す ID3D11RenderTargetView の配列へのポインター。レンダーターゲットビューの取得が不要な場合は、このパラメーターに NULL を指定します。
ppDepthStencilViewID3D11DepthStencilView**outoptional深度ステンシルビューを表す ID3D11DepthStencilView へのポインター。深度ステンシルビューの取得が不要な場合は、このパラメーターに NULL を指定します。
UAVStartSlotDWORDinアンオーダードアクセスビューの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_PS_CS_UAV_REGISTER_COUNT - 1)。 ピクセルシェーダーの場合、UAVStartSlot はバインドされているレンダーターゲットビューの数と等しくする必要があります。
NumUAVsDWORDinppUnorderedAccessViews に返すアンオーダードアクセスビューの数。範囲は 0 から D3D11_PS_CS_UAV_REGISTER_COUNT - UAVStartSlot です。
ppUnorderedAccessViewsID3D11UnorderedAccessView**outoptional取得されるアンオーダードアクセスビューを表す ID3D11UnorderedAccessView の配列へのポインター。アンオーダードアクセスビューの取得が不要な場合は、このパラメーターに NULL を指定します。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

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

vtbl 91 void OMGetBlendState(ID3D11BlendState** ppBlendState, FLOAT* BlendFactor, DWORD* pSampleMask)

出力マージャーステージのブレンドステートを取得します。(ID3D11DeviceContext.OMGetBlendState)

ppBlendStateID3D11BlendState**outoptionalブレンドステートインターフェイスへのポインターのアドレス (ID3D11BlendState を参照)。
BlendFactorFLOAT*outoptionalRGBA の各コンポーネントに 1 つずつ対応するブレンド係数の配列。
pSampleMaskDWORD*outoptionalサンプルマスクへのポインター。

解説(Remarks)

ブレンドステートを取得すると、返されるインターフェイスの参照カウントが 1 つ増加します。アプリケーションは不要になったポインターを解放する必要があります。そうしないとメモリリークが発生します。

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

vtbl 92 void OMGetDepthStencilState(ID3D11DepthStencilState** ppDepthStencilState, DWORD* pStencilRef)

出力マージャーステージの深度ステンシルステートを取得します。(ID3D11DeviceContext.OMGetDepthStencilState)

ppDepthStencilStateID3D11DepthStencilState**outoptionalデバイスからの情報が格納される、深度ステンシルステートインターフェイスへのポインターのアドレス (ID3D11DepthStencilState を参照)。
pStencilRefDWORD*outoptional深度ステンシルテストで使用されるステンシル参照値へのポインター。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

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

vtbl 93 void SOGetTargets(DWORD NumBuffers, ID3D11Buffer** ppSOTargets)

パイプラインのストリーム出力ステージの出力先バッファーを取得します。

NumBuffersDWORDin取得するバッファーの数。
ppSOTargetsID3D11Buffer**outoptionalデバイスから取得する出力バッファーの配列 (ID3D11Buffer を参照)。

解説(Remarks)

出力バッファーは最大 4 つまで取得できます。

返された ppSOTargets 配列が指す出力バッファーへのオフセットは、ID3D11DeviceContext::SOSetTargets で定義されているとおり、-1 (追記) であると見なして構いません。

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

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

vtbl 94 void RSGetState(ID3D11RasterizerState** ppRasterizerState)

パイプラインのラスタライザーステージからラスタライザーステートを取得します。(ID3D11DeviceContext.RSGetState)

ppRasterizerStateID3D11RasterizerState**outデバイスからの情報が格納される、ラスタライザーステートインターフェイスへのポインターのアドレス (ID3D11RasterizerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 95 void RSGetViewports(DWORD* pNumViewports, D3D11_VIEWPORT* pViewports)

ラスタライザーステージにバインドされているビューポートの配列を取得します。

pNumViewportsDWORD*inout

入力時には pViewports 配列内のビューポート数 (範囲は 0 から D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) を指定する変数へのポインター。出力時には、ラスタライザーステージに実際にバインドされているビューポートの数がこの変数に格納されます。 pViewportsNULL の場合、RSGetViewports は現在バインドされているビューポートの数をこの変数に格納します。

注意 一部のバージョンの Windows SDK では、pViewportsNULL であっても、pNumViewports が指す変数の入力値が D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE より大きい場合にデバッグデバイスが例外を発生させます。通常のランタイムは、pViewportsNULL の場合、pNumViewports が指す変数の値を無視します。このデバッグデバイスの動作は、将来の Windows SDK のリリースで修正される可能性があります。
pViewportsD3D11_VIEWPORT*outoptionalラスタライザーステージにバインドされているビューポートの D3D11_VIEWPORT 構造体の配列。(pNumViewports が指す変数の) ビューポート数が実際に現在バインドされているビューポート数より大きい場合、配列の未使用要素には 0 が格納されます。 ビューポートのサイズがデバイスの機能レベルにどのように依存するか (Direct3D 10 と Direct3D 11 の間で変更されています) については、D3D11_VIEWPORT を参照してください。

解説(Remarks)

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

vtbl 96 void RSGetScissorRects(DWORD* pNumRects, RECT* pRects)

ラスタライザーステージにバインドされているシザー矩形の配列を取得します。(ID3D11DeviceContext.RSGetScissorRects)

pNumRectsDWORD*inoutバインドされているシザー矩形の数 (範囲は 0 から D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)。返される矩形の数を pNumRects で確認するには、pRectsNULL を設定します。
pRectsRECT*outoptionalシザー矩形の配列 (D3D11_RECT を参照)。NumRects が現在バインドされているシザー矩形の数より大きい場合、配列の未使用の要素には 0 が格納されます。
vtbl 97 void HSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

ハルシェーダーのリソースを取得します。

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 98 void HSGetShader(ID3D11HullShader** ppHullShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されているハルシェーダーを取得します。

ppHullShaderID3D11HullShader**outこのメソッドが返すハルシェーダーへのポインターのアドレス (ID3D11HullShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 99 void HSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

ハルシェーダーステージからサンプラーステートインターフェイスの配列を取得します。

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 100 void HSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ハルシェーダーステージで使用されている定数バッファーを取得します。

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 101 void DSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

ドメインシェーダーのリソースを取得します。

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 102 void DSGetShader(ID3D11DomainShader** ppDomainShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されているドメインシェーダーを取得します。

ppDomainShaderID3D11DomainShader**outこのメソッドが返すドメインシェーダーへのポインターのアドレス (ID3D11DomainShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 103 void DSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

ドメインシェーダーステージからサンプラーステートインターフェイスの配列を取得します。

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 104 void DSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

ドメインシェーダーステージで使用されている定数バッファーを取得します。

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 105 void CSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D11ShaderResourceView** ppShaderResourceViews)

コンピュートシェーダーのリソースを取得します。

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1)。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソース用には最大 128 スロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot)。
ppShaderResourceViewsID3D11ShaderResourceView**outoptionalデバイスが返すシェーダーリソースビューインターフェイスの配列。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 106 void CSGetUnorderedAccessViews(DWORD StartSlot, DWORD NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews)

アンオーダードリソースのビューの配列を取得します。

StartSlotDWORDin返す、0 から始まる配列内の最初の要素のインデックス (範囲は 0 から D3D11_1_UAV_SLOT_COUNT - 1)。
NumUAVsDWORDin取得するビューの数 (範囲は 0 から D3D11_1_UAV_SLOT_COUNT - StartSlot)。
ppUnorderedAccessViewsID3D11UnorderedAccessView**outoptional取得するインターフェイスポインターの配列へのポインター (ID3D11UnorderedAccessView を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 107 void CSGetShader(ID3D11ComputeShader** ppComputeShader, ID3D11ClassInstance** ppClassInstances, DWORD* pNumClassInstances)

デバイスに現在設定されているコンピュートシェーダーを取得します。

ppComputeShaderID3D11ComputeShader**outこのメソッドが返すコンピュートシェーダーへのポインターのアドレス (ID3D11ComputeShader を参照)。
ppClassInstancesID3D11ClassInstance**outoptionalクラスインスタンスインターフェイスの配列へのポインター (ID3D11ClassInstance を参照)。
pNumClassInstancesDWORD*inoutoptional配列内のクラスインスタンス要素の数。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 108 void CSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D11SamplerState** ppSamplers)

コンピュートシェーダーステージからサンプラーステートインターフェイスの配列を取得します。

StartSlotDWORDinサンプラーの取得を開始する、0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1)。
NumSamplersDWORDinデバイスコンテキストから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットが利用できます (範囲は 0 から D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot)。
ppSamplersID3D11SamplerState**outoptionalサンプラーステートインターフェイスの配列へのポインター (ID3D11SamplerState を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 109 void CSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D11Buffer** ppConstantBuffers)

コンピュートシェーダーステージで使用されている定数バッファーを取得します。

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列へのインデックス (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1)。
NumBuffersDWORDin取得するバッファーの数 (範囲は 0 から D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot)。
ppConstantBuffersID3D11Buffer**outoptionalこのメソッドが返す定数バッファーインターフェイスポインターの配列 (ID3D11Buffer を参照)。

解説(Remarks)

返されたインターフェイスは参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった時点で、返されたインターフェイスに対して IUnknown::Release を呼び出す必要があります。

vtbl 110 void ClearState()

すべての設定を既定値に戻します。

解説(Remarks)

このメソッドは、デバイスコンテキストを既定の設定にリセットします。これにより、すべての入出力リソーススロット、シェーダー、入力レイアウト、述語、シザー矩形、深度ステンシルステート、ラスタライザーステート、ブレンドステート、サンプラーステート、ビューポートが NULL に設定されます。プリミティブトポロジは UNDEFINED に設定されます。

それまでに記録したコマンドのリストを破棄したい場合は、ID3D11DeviceContext::FinishCommandList を呼び出し、得られた ID3D11CommandList を破棄してください。

vtbl 111 void Flush()

コマンドバッファーにキューイングされたコマンドを、グラフィックスプロセッシングユニット (GPU) へ送信します。

解説(Remarks)

ほとんどのアプリケーションでは、このメソッドを呼び出す必要はありません。不要な場面でこのメソッドを呼び出すと、パフォーマンス上の代償を伴います。 Flush の呼び出しごとに、かなりのオーバーヘッドが発生します。

アプリケーションが Microsoft Direct3D のステート設定、プレゼント、または描画コマンドを呼び出すと、それらのコマンドは内部のコマンドバッファーへキューイングされます。 Flush は、それらのコマンドを処理のために GPU へ送信します。通常、Direct3D ランタイムは、コマンドバッファーが満杯になったときやアプリケーションがリソースをマップしたときなど、送信が必要と判断した時点で自動的にこれらのコマンドを GPU へ送信します。Flush は、これを手動で行います。

CPU が任意の時間だけ待機する場合 (たとえば Sleep 関数を呼び出す場合) には、Flush の使用をお勧めします。

Flush は非同期に動作するため、GPU がキューイングされたグラフィックスコマンドの実行を完了する前に戻ることも、完了した後に戻ることもあります。ただし、グラフィックスコマンドは最終的には必ず完了します。ID3D11Device::CreateQuery メソッドを D3D11_QUERY_EVENT の値で呼び出してイベントクエリを作成し、そのイベントクエリを ID3D11DeviceContext::GetData メソッドの呼び出しで使用すれば、GPU がグラフィックスコマンドの処理を完了した時点を判別できます。

Microsoft Direct3D 11 はオブジェクトの破棄を遅延します。そのため、アプリケーションはオブジェクトが即座に破棄されることを前提にできません。Flush を呼び出すと、破棄が遅延されていたオブジェクトが破棄されます。アプリケーションがオブジェクトの同期的な破棄を必要とする場合は、すべての参照を解放し、ID3D11DeviceContext::ClearState を呼び出してから Flush を呼び出すことをお勧めします。

フリップ表示モデルのスワップチェーンにおける遅延破棄の問題

Direct3D 11 は、ビューやリソースなどのオブジェクトの破棄を、効率的に破棄できるようになるまで遅延します。この遅延破棄は、フリップ表示モデルのスワップチェーンで問題を引き起こす場合があります。フリップ表示モデルのスワップチェーンには DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL フラグが設定されています。フリップ表示モデルのスワップチェーンを作成する場合、HWNDIWindow、またはコンポジションサーフェスに一度に関連付けられるスワップチェーンは 1 つだけです。アプリケーションがフリップ表示モデルのスワップチェーンを破棄して別のスワップチェーンに置き換えようとする場合、元のスワップチェーンへの参照をすべて即座に解放しても、元のスワップチェーンは破棄されません。

ほとんどのアプリケーションでは、新しいスワップチェーンバッファーで古いスワップチェーンバッファーを置き換えるシナリオの大半において、IDXGISwapChain::ResizeBuffers メソッドを使用します。しかし、古いスワップチェーンを実際に破棄して新しいスワップチェーンを作成する必要がある場合、アプリケーションは解放したすべてのオブジェクトの破棄を強制する必要があります。破棄を強制するには、ID3D11DeviceContext::ClearState を呼び出し (あるいは、ビューがパイプラインステートにバインドされていない状態を確保し)、その後、即時コンテキストで Flush を呼び出します。新しいスワップチェーンを作成するために IDXGIFactory2::CreateSwapChainForHwndIDXGIFactory2::CreateSwapChainForCoreWindow、または IDXGIFactory2::CreateSwapChainForComposition を再度呼び出す前に、破棄を強制する必要があります。

vtbl 112 D3D11_DEVICE_CONTEXT_TYPE GetType()

デバイスコンテキストの種類を取得します。

戻り値

型: D3D11_DEVICE_CONTEXT_TYPE

デバイスコンテキストの種類を示す D3D11_DEVICE_CONTEXT_TYPE のメンバー。

vtbl 113 DWORD GetContextFlags()

現在の遅延コンテキストに関連付けられた初期化フラグを取得します。

解説(Remarks)

GetContextFlags メソッドは、ID3D11Device::CreateDeferredContextContextFlags パラメーターに指定されたフラグを取得します。ただし、このコンテキストフラグは将来の使用のために予約されています。

vtbl 114 HRESULT FinishCommandList(BOOL RestoreDeferredContextState, ID3D11CommandList** ppCommandList)

コマンドリストを作成し、グラフィックスコマンドをそこに記録します。

RestoreDeferredContextStateBOOLin

FinishCommandList の実行前にランタイムが遅延コンテキストのステートを保存し、実行後に復元するかどうかを決定するブール値フラグ。ランタイムにステートの保存と復元を行わせるには TRUE を指定します。ランタイムがステートの保存も復元も行わないようにするには FALSE を指定します。この場合、FinishCommandList の呼び出しが完了すると、遅延コンテキストは既定のステートに戻ります。既定のステートについては、ID3D11DeviceContext::ClearState を参照してください。TRUE を渡したときにランタイムが復元するステートとほぼ同等のステートを自ら復元する場合を除き、通常は FALSE を使用してください。FALSE を使用すると、不要で非効率なステート遷移を避けられます。

注意 このパラメーターは、今回の FinishCommandList の呼び出しが返すコマンドリストには影響しません。ただし、同じ遅延コンテキストにおける次回の FinishCommandList の呼び出しで得られるコマンドリストには影響します。
ppCommandListID3D11CommandList**outoptionalメソッドの完了時に、渡された ID3D11CommandList インターフェイスポインターへのポインターが、記録されたコマンドリストの情報で初期化されます。得られる ID3D11CommandList オブジェクトは不変であり、ID3D11DeviceContext::ExecuteCommandList でのみ使用できます。

戻り値

型: HRESULT

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

解説(Remarks)

遅延コンテキストからコマンドリストを作成し、FinishCommandList を呼び出してコマンドをそこに記録します。コマンドリストを再生するには、即時コンテキストで ID3D11DeviceContext::ExecuteCommandList を呼び出します。

即時コンテキストのステートは、コマンドリストの実行前後にクリアされます。コマンドリストには継承の概念がありません。FinishCommandList の各呼び出しでは、前回の FinishCommandList の呼び出し以降に設定されたステートのみが記録されます。

たとえば、デバイスコンテキストのステートとは、そのレンダーステートまたはパイプラインステートのことです。デバイスコンテキストのステートを取得するには、アプリケーションは ID3D11DeviceContext::GetData または ID3D11DeviceContext::GetPredication を呼び出せます。

FinishCommandList の使用方法の詳細については、方法: コマンドリストを記録するを参照してください。

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ID3D11DeviceContext "{C0BFA96C-E089-44FB-8EAF-26F8796190DA}"
#usecom global ID3D11DeviceContext IID_ID3D11DeviceContext "{}"
#comfunc global ID3D11DeviceContext_VSSetConstantBuffers                       7 int,int,sptr
#comfunc global ID3D11DeviceContext_PSSetShaderResources                       8 int,int,sptr
#comfunc global ID3D11DeviceContext_PSSetShader                                9 sptr,sptr,int
#comfunc global ID3D11DeviceContext_PSSetSamplers                              10 int,int,sptr
#comfunc global ID3D11DeviceContext_VSSetShader                                11 sptr,sptr,int
#comfunc global ID3D11DeviceContext_DrawIndexed                                12 int,int,int
#comfunc global ID3D11DeviceContext_Draw                                       13 int,int
#comfunc global ID3D11DeviceContext_Map                                        14 sptr,int,int,int,var
#comfunc global ID3D11DeviceContext_Unmap                                      15 sptr,int
#comfunc global ID3D11DeviceContext_PSSetConstantBuffers                       16 int,int,sptr
#comfunc global ID3D11DeviceContext_IASetInputLayout                           17 sptr
#comfunc global ID3D11DeviceContext_IASetVertexBuffers                         18 int,int,sptr,var,var
#comfunc global ID3D11DeviceContext_IASetIndexBuffer                           19 sptr,int,int
#comfunc global ID3D11DeviceContext_DrawIndexedInstanced                       20 int,int,int,int,int
#comfunc global ID3D11DeviceContext_DrawInstanced                              21 int,int,int,int
#comfunc global ID3D11DeviceContext_GSSetConstantBuffers                       22 int,int,sptr
#comfunc global ID3D11DeviceContext_GSSetShader                                23 sptr,sptr,int
#comfunc global ID3D11DeviceContext_IASetPrimitiveTopology                     24 int
#comfunc global ID3D11DeviceContext_VSSetShaderResources                       25 int,int,sptr
#comfunc global ID3D11DeviceContext_VSSetSamplers                              26 int,int,sptr
#comfunc global ID3D11DeviceContext_Begin                                      27 sptr
#comfunc global ID3D11DeviceContext_End                                        28 sptr
#comfunc global ID3D11DeviceContext_GetData                                    29 sptr,sptr,int,int
#comfunc global ID3D11DeviceContext_SetPredication                             30 sptr,int
#comfunc global ID3D11DeviceContext_GSSetShaderResources                       31 int,int,sptr
#comfunc global ID3D11DeviceContext_GSSetSamplers                              32 int,int,sptr
#comfunc global ID3D11DeviceContext_OMSetRenderTargets                         33 int,sptr,sptr
#comfunc global ID3D11DeviceContext_OMSetRenderTargetsAndUnorderedAccessViews  34 int,sptr,sptr,int,int,sptr,var
#comfunc global ID3D11DeviceContext_OMSetBlendState                            35 sptr,var,int
#comfunc global ID3D11DeviceContext_OMSetDepthStencilState                     36 sptr,int
#comfunc global ID3D11DeviceContext_SOSetTargets                               37 int,sptr,var
#comfunc global ID3D11DeviceContext_DrawAuto                                   38
#comfunc global ID3D11DeviceContext_DrawIndexedInstancedIndirect               39 sptr,int
#comfunc global ID3D11DeviceContext_DrawInstancedIndirect                      40 sptr,int
#comfunc global ID3D11DeviceContext_Dispatch                                   41 int,int,int
#comfunc global ID3D11DeviceContext_DispatchIndirect                           42 sptr,int
#comfunc global ID3D11DeviceContext_RSSetState                                 43 sptr
#comfunc global ID3D11DeviceContext_RSSetViewports                             44 int,var
#comfunc global ID3D11DeviceContext_RSSetScissorRects                          45 int,var
#comfunc global ID3D11DeviceContext_CopySubresourceRegion                      46 sptr,int,int,int,int,sptr,int,var
#comfunc global ID3D11DeviceContext_CopyResource                               47 sptr,sptr
#comfunc global ID3D11DeviceContext_UpdateSubresource                          48 sptr,int,var,sptr,int,int
#comfunc global ID3D11DeviceContext_CopyStructureCount                         49 sptr,int,sptr
#comfunc global ID3D11DeviceContext_ClearRenderTargetView                      50 sptr,var
#comfunc global ID3D11DeviceContext_ClearUnorderedAccessViewUint               51 sptr,var
#comfunc global ID3D11DeviceContext_ClearUnorderedAccessViewFloat              52 sptr,var
#comfunc global ID3D11DeviceContext_ClearDepthStencilView                      53 sptr,int,float,int
#comfunc global ID3D11DeviceContext_GenerateMips                               54 sptr
#comfunc global ID3D11DeviceContext_SetResourceMinLOD                          55 sptr,float
#comfunc global ID3D11DeviceContext_GetResourceMinLOD                          56 sptr
#comfunc global ID3D11DeviceContext_ResolveSubresource                         57 sptr,int,sptr,int,int
#comfunc global ID3D11DeviceContext_ExecuteCommandList                         58 sptr,int
#comfunc global ID3D11DeviceContext_HSSetShaderResources                       59 int,int,sptr
#comfunc global ID3D11DeviceContext_HSSetShader                                60 sptr,sptr,int
#comfunc global ID3D11DeviceContext_HSSetSamplers                              61 int,int,sptr
#comfunc global ID3D11DeviceContext_HSSetConstantBuffers                       62 int,int,sptr
#comfunc global ID3D11DeviceContext_DSSetShaderResources                       63 int,int,sptr
#comfunc global ID3D11DeviceContext_DSSetShader                                64 sptr,sptr,int
#comfunc global ID3D11DeviceContext_DSSetSamplers                              65 int,int,sptr
#comfunc global ID3D11DeviceContext_DSSetConstantBuffers                       66 int,int,sptr
#comfunc global ID3D11DeviceContext_CSSetShaderResources                       67 int,int,sptr
#comfunc global ID3D11DeviceContext_CSSetUnorderedAccessViews                  68 int,int,sptr,var
#comfunc global ID3D11DeviceContext_CSSetShader                                69 sptr,sptr,int
#comfunc global ID3D11DeviceContext_CSSetSamplers                              70 int,int,sptr
#comfunc global ID3D11DeviceContext_CSSetConstantBuffers                       71 int,int,sptr
#comfunc global ID3D11DeviceContext_VSGetConstantBuffers                       72 int,int,sptr
#comfunc global ID3D11DeviceContext_PSGetShaderResources                       73 int,int,sptr
#comfunc global ID3D11DeviceContext_PSGetShader                                74 sptr,sptr,var
#comfunc global ID3D11DeviceContext_PSGetSamplers                              75 int,int,sptr
#comfunc global ID3D11DeviceContext_VSGetShader                                76 sptr,sptr,var
#comfunc global ID3D11DeviceContext_PSGetConstantBuffers                       77 int,int,sptr
#comfunc global ID3D11DeviceContext_IAGetInputLayout                           78 sptr
#comfunc global ID3D11DeviceContext_IAGetVertexBuffers                         79 int,int,sptr,var,var
#comfunc global ID3D11DeviceContext_IAGetIndexBuffer                           80 sptr,var,var
#comfunc global ID3D11DeviceContext_GSGetConstantBuffers                       81 int,int,sptr
#comfunc global ID3D11DeviceContext_GSGetShader                                82 sptr,sptr,var
#comfunc global ID3D11DeviceContext_IAGetPrimitiveTopology                     83 var
#comfunc global ID3D11DeviceContext_VSGetShaderResources                       84 int,int,sptr
#comfunc global ID3D11DeviceContext_VSGetSamplers                              85 int,int,sptr
#comfunc global ID3D11DeviceContext_GetPredication                             86 sptr,var
#comfunc global ID3D11DeviceContext_GSGetShaderResources                       87 int,int,sptr
#comfunc global ID3D11DeviceContext_GSGetSamplers                              88 int,int,sptr
#comfunc global ID3D11DeviceContext_OMGetRenderTargets                         89 int,sptr,sptr
#comfunc global ID3D11DeviceContext_OMGetRenderTargetsAndUnorderedAccessViews  90 int,sptr,sptr,int,int,sptr
#comfunc global ID3D11DeviceContext_OMGetBlendState                            91 sptr,var,var
#comfunc global ID3D11DeviceContext_OMGetDepthStencilState                     92 sptr,var
#comfunc global ID3D11DeviceContext_SOGetTargets                               93 int,sptr
#comfunc global ID3D11DeviceContext_RSGetState                                 94 sptr
#comfunc global ID3D11DeviceContext_RSGetViewports                             95 var,var
#comfunc global ID3D11DeviceContext_RSGetScissorRects                          96 var,var
#comfunc global ID3D11DeviceContext_HSGetShaderResources                       97 int,int,sptr
#comfunc global ID3D11DeviceContext_HSGetShader                                98 sptr,sptr,var
#comfunc global ID3D11DeviceContext_HSGetSamplers                              99 int,int,sptr
#comfunc global ID3D11DeviceContext_HSGetConstantBuffers                       100 int,int,sptr
#comfunc global ID3D11DeviceContext_DSGetShaderResources                       101 int,int,sptr
#comfunc global ID3D11DeviceContext_DSGetShader                                102 sptr,sptr,var
#comfunc global ID3D11DeviceContext_DSGetSamplers                              103 int,int,sptr
#comfunc global ID3D11DeviceContext_DSGetConstantBuffers                       104 int,int,sptr
#comfunc global ID3D11DeviceContext_CSGetShaderResources                       105 int,int,sptr
#comfunc global ID3D11DeviceContext_CSGetUnorderedAccessViews                  106 int,int,sptr
#comfunc global ID3D11DeviceContext_CSGetShader                                107 sptr,sptr,var
#comfunc global ID3D11DeviceContext_CSGetSamplers                              108 int,int,sptr
#comfunc global ID3D11DeviceContext_CSGetConstantBuffers                       109 int,int,sptr
#comfunc global ID3D11DeviceContext_ClearState                                 110
#comfunc global ID3D11DeviceContext_Flush                                      111
#comfunc global ID3D11DeviceContext_GetType                                    112
#comfunc global ID3D11DeviceContext_GetContextFlags                            113
#comfunc global ID3D11DeviceContext_FinishCommandList                          114 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。