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

ID3D10Device

COM
IID9b7e4c0f-342c-4106-a19f-4f2704f689f0継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デバイスインターフェイスは、Direct3D 10.0 の仮想アダプターを表します。レンダリングの実行や Direct3D リソースの作成に使用されます。

解説(Remarks)

デバイスは D3D10CreateDevice を使用して作成します。

メソッド 95

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

vtbl 3 void VSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin設定するバッファーの数。
ppConstantBuffersID3D10Buffer**inoptionalデバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 4 void PSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**inoptionalデバイスに設定する シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 5 void PSSetShader(ID3D10PixelShader* pPixelShader)

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

pPixelShaderID3D10PixelShader*inoptionalピクセルシェーダー(ID3D10PixelShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 6 void PSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

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

解説(Remarks)

サンプラーには NULL を設定できます。この場合、既定のステートが呼び出されます。既定のステートは次のように定義されています。

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 7 void VSSetShader(ID3D10VertexShader* pVertexShader)

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

pVertexShaderID3D10VertexShader*inoptional頂点シェーダー(ID3D10VertexShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

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

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

IndexCountDWORDin描画するインデックスの数。
StartIndexLocationDWORDin頂点バッファーへのアクセス時に使用する最初のインデックスの位置。StartIndexLocation から始めて、頂点バッファー内の頂点をインデックス参照します。
BaseVertexLocationINTin頂点バッファーの先頭から最初の頂点までのオフセット。

解説(Remarks)

draw API はレンダリングパイプラインに作業を送信します。

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

vtbl 9 void Draw(DWORD VertexCount, DWORD StartVertexLocation)

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

VertexCountDWORDin描画する頂点の数。
StartVertexLocationDWORDin最初の頂点のインデックス。通常は頂点バッファー内のオフセットです。SV_TargetId システム値セマンティクス でマークされたシェーダーパラメーターに対して生成される最初の頂点 ID として使用することもできます。

解説(Remarks)

draw API はレンダリングパイプラインに作業を送信します。

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

vtbl 10 void PSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin設定するバッファーの数。
ppConstantBuffersID3D10Buffer**inoptionalデバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 11 void IASetInputLayout(ID3D10InputLayout* pInputLayout)

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

pInputLayoutID3D10InputLayout*inoptional入力レイアウトオブジェクト(ID3D10InputLayout を参照)へのポインター。これは IA ステージによって読み取られる入力バッファーを記述します。

解説(Remarks)

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 12 void IASetVertexBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppVertexBuffers, DWORD* pStrides, DWORD* pOffsets)

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

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

解説(Remarks)

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

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

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 13 void IASetIndexBuffer(ID3D10Buffer* pIndexBuffer, DXGI_FORMAT Format, DWORD Offset)

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

pIndexBufferID3D10Buffer*inoptionalインデックスを格納するバッファー(ID3D10Buffer を参照)へのポインター。インデックスバッファーは D3D10_BIND_INDEX_BUFFER フラグを付けて作成されている必要があります。
FormatDXGI_FORMATinインデックスバッファー内のデータのフォーマットを指定します。インデックスバッファーのデータに使用できるフォーマットは、16 ビット整数(DXGI_FORMAT_R16_UINT)と 32 ビット整数(DXGI_FORMAT_R32_UINT)のみです。
OffsetDWORDinインデックスバッファーの先頭から、使用する最初のインデックスまでのオフセット(バイト単位)。

解説(Remarks)

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

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

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

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

インデックス付きでインスタンス化されたプリミティブを描画します。(ID3D10Device.DrawIndexedInstanced)

IndexCountPerInstanceDWORDin各インスタンスで使用するインデックスバッファーのサイズ。
InstanceCountDWORDin描画するインスタンスの数。
StartIndexLocationDWORDin最初のインデックスのインデックス。
BaseVertexLocationINTin最初の頂点のインデックス。このインデックスは符号付きであるため、負のインデックスを指定できます。負のインデックスとインデックスバッファーからのインデックス値の合計が 0 未満になる場合、結果は未定義です。
StartInstanceLocationDWORDin最初のインスタンスのインデックス。

解説(Remarks)

draw API はレンダリングパイプラインに作業を送信します。

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

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

インデックスなしでインスタンス化されたプリミティブを描画します。(ID3D10Device.DrawInstanced)

VertexCountPerInstanceDWORDin描画する頂点の数。
InstanceCountDWORDin描画するインスタンスの数。
StartVertexLocationDWORDin最初の頂点のインデックス。
StartInstanceLocationDWORDin最初のインスタンスのインデックス。

解説(Remarks)

draw API はレンダリングパイプラインに作業を送信します。

インスタンス化により、同じジオメトリを再利用してシーン内の複数のオブジェクトを描画することで、パフォーマンスを向上できる場合があります。インスタンス化の一例として、同じオブジェクトを異なる位置と色で描画することが挙げられます。インスタンス化の例については、Instancing10 サンプル を参照してください。

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

vtbl 16 void GSSetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin設定するバッファーの数。
ppConstantBuffersID3D10Buffer**inoptionalデバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 17 void GSSetShader(ID3D10GeometryShader* pShader)

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

pShaderID3D10GeometryShader*inoptionalジオメトリシェーダー(ID3D10GeometryShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。

解説(Remarks)

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 18 void IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY Topology)

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

TopologyD3D_PRIMITIVE_TOPOLOGYinプリミティブの種類とプリミティブデータの順序(D3D10_PRIMITIVE_TOPOLOGY を参照)。
vtbl 19 void VSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**inoptionalデバイスに設定する シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 20 void VSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

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

解説(Remarks)

サンプラーには NULL を設定できます。この場合、既定のステートが呼び出されます。既定のステートは次のように定義されています。


//Default sampler state:
D3D10_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D10_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;
        

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 21 void SetPredication(ID3D10Predicate* pPredicate, BOOL PredicateValue)

レンダリングプレディケートを設定します。(ID3D10Device.SetPredication)

pPredicateID3D10Predicate*inoptionalプレディケート(ID3D10Predicate を参照)へのポインター。NULL 値は「プレディケーションなし」を示します。この場合、PredicateValue の値は無関係ですが、ID3D10Device::GetPredication のために保持されます。
PredicateValueBOOLinTRUE の場合、プレディケートの条件が満たされたときにレンダリングが影響を受けます。FALSE の場合、条件が満たされないときにレンダリングが影響を受けます。

解説(Remarks)

プレディケーションに使用するには、プレディケートが「issued」または「signaled」状態でなければなりません。プレディケートがプレディケーション用に設定されている間、ID3D10Asynchronous::Begin および ID3D10Asynchronous::End の呼び出しは無効です。

このメソッドは、プレディケートの結果として得られる Predicate データが PredicateValue と等しい場合に、後続のレンダリングおよびリソース操作コマンドを実際には実行しないことを示すために使用します。ただし、一部のプレディケートはヒントにすぎないため、実際には操作の実行を妨げないことがあります。

プレディケーションの主な利点は、ID3D10Asynchronous::GetData の戻りをスピンして待機するというパフォーマンス上のコストを負うことなく、アプリケーションがグラフィックスコマンドを発行できるようにすることです。したがって、ID3D10Asynchronous::GetDataS_FALSE を返している間もプレディケーションを行えます。別の見方をすると、ID3D10Asynchronous::GetDataS_FALSE を返す可能性がある場合に、アプリケーションはプレディケーションをフォールバックとして使用することもできます。ID3D10Asynchronous::GetDataS_OK を返す場合、アプリケーションは独自のアプリケーションロジックを用いてグラフィックスコマンドの手動呼び出しをスキップできます。

vtbl 22 void GSSetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDin設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**inoptionalデバイスに設定する シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 23 void GSSetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

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

解説(Remarks)

サンプラーには NULL を設定できます。この場合、既定のステートが呼び出されます。既定のステートは次のように定義されています。


//Default sampler state:
D3D10_SAMPLER_DESC SamplerDesc;
SamplerDesc.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;
SamplerDesc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP;
SamplerDesc.MipLODBias = 0;
SamplerDesc.MaxAnisotropy = 1;
SamplerDesc.ComparisonFunc = D3D10_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;
        

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 24 void OMSetRenderTargets(DWORD NumViews, ID3D10RenderTargetView** ppRenderTargetViews, ID3D10DepthStencilView* pDepthStencilView)

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

NumViewsDWORDinバインドするレンダーターゲットの数。
ppRenderTargetViewsID3D10RenderTargetView**inoptionalデバイスにバインドするレンダーターゲット(ID3D10RenderTargetView を参照)の配列へのポインター。このパラメーターが NULL の場合、レンダーターゲットはバインドされません。「解説」を参照してください。
pDepthStencilViewID3D10DepthStencilView*inoptionalデバイスにバインドする深度ステンシルビュー(ID3D10DepthStencilView を参照)へのポインター。このパラメーターが NULL の場合、深度ステンシルステートはバインドされません。

解説(Remarks)

OMSetRenderTargets を呼び出すと、ppRenderTargetViews 内のレンダーターゲットの数に関係なく、バインドされているすべてのレンダーターゲットと深度ステンシルターゲットが上書きされます。

デバイスが任意の時点でアクティブにできるレンダーターゲットの最大数は、D3D10.h 内の D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT という #define で設定されます。同じ サブリソース を複数のレンダーターゲットスロットに設定しようとすることは無効です。

いずれかのサブリソースが現在(おそらく パイプライン の別の部分で)読み取りまたは書き込み用にもバインドされている場合、それらのバインドポイントは NULL に設定され、単一のレンダリング操作内で同じサブリソースが同時に読み書きされるのを防ぎます。

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

リソースのバインドの詳細については、リソースとパイプラインステージのバインド を参照してください。

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

レンダーターゲット用の 8 つのスロットは、任意の組み合わせでレンダーターゲットを設定することも、設定しないこともできます。

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

vtbl 25 void OMSetBlendState(ID3D10BlendState* pBlendState, FLOAT* BlendFactor, DWORD SampleMask)

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

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

解説(Remarks)

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

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

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

ステート 既定値
AlphaToCoverageEnable FALSE
BlendEnable FALSE[8]
SrcBlend D3D10_BLEND_ONE
DstBlend D3D10_BLEND_ZERO
BlendOp D3D10_BLEND_OP_ADD
SrcBlendAlpha D3D10_BLEND_ONE
DstBlendAlpha D3D10_BLEND_ZERO
BlendOpAlpha D3D10_BLEND_OP_ADD
RenderTargetWriteMask[8] D3D10_COLOR_WRITE_ENABLE_ALL[8]

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 26 void OMSetDepthStencilState(ID3D10DepthStencilState* pDepthStencilState, DWORD StencilRef)

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

pDepthStencilStateID3D10DepthStencilState*inoptionalデバイスにバインドする深度ステンシルステートインターフェイス(ID3D10DepthStencilState を参照)へのポインター。
StencilRefDWORDin深度ステンシルテストの実行時に比較対象とする参照値。解説を参照してください。

解説(Remarks)

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

深度ステンシルステートは、出力マージャー ステージが深度ステンシルテストをセットアップするために使用します。ステンシル参照値は、深度ステンシルテストで使用される制御値です。

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 27 void SOSetTargets(DWORD NumBuffers, ID3D10Buffer** ppSOTargets, DWORD* pOffsets)

StreamOutput ステージのターゲット出力バッファーを設定します。これにより、パイプラインによるデータのストリーム出力の有効/無効が切り替わります。

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

解説(Remarks)

データをストリーム出力するには、(描画呼び出しの前に)ID3D10Device::SOSetTargets を呼び出します。データのストリーム出力を停止するには、NULL を指定して SOSetTargets を呼び出します。例については、GDC 2007 ワークショップの Exercise 01 を参照してください。この例では、RenderInstanceToStream 関数で描画メソッドを呼び出す前に、ストリーム出力のレンダーターゲットを設定しています。

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

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

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

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 28 void DrawAuto()

ジオメトリシェーダーステージで作成された、サイズが不明なジオメトリを描画します。解説を参照してください。

解説(Remarks)

draw API はレンダリングパイプラインに作業を送信します。

データが SO ステージ のバッファーにストリーム出力された後、それらのバッファーを再び入力アセンブラーステージの入力スロット 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 つの入力バッファーが IA ステージのスロット 0 に入力としてバインドされている場合にのみ動作します。アプリケーションは、SO バッファーリソースを D3D10_BIND_VERTEX_BUFFERD3D10_BIND_STREAM_OUTPUT の両方のバインドフラグを付けて作成する必要があります。

この API はインデックス処理やインスタンス化をサポートしません。

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

DrawAuto の使用例は、ParticlesGS サンプル および PipesGS サンプル にあります。

vtbl 29 void RSSetState(ID3D10RasterizerState* pRasterizerState)

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

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

解説(Remarks)

ラスタライザーステートインターフェイスを作成するには、ID3D10Device::CreateRasterizerState を呼び出します。ラスタライザーステートの設定方法の詳細については、ラスタライザーステートの設定 を参照してください。

このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。

vtbl 30 void RSSetViewports(DWORD NumViewports, D3D10_VIEWPORT* pViewports)

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

NumViewportsDWORDinバインドするビューポートの数。
pViewportsD3D10_VIEWPORT*inoptionalデバイスにバインドするビューポート(D3D10_VIEWPORT を参照)の配列。各ビューポートは、その範囲が許容範囲(D3D10_VIEWPORT_BOUNDS_MIND3D10_VIEWPORT_BOUNDS_MAXD3D10_MIN_DEPTHD3D10_MAX_DEPTH)内になければなりません。

解説(Remarks)

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

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

vtbl 31 void RSSetScissorRects(DWORD NumRects, RECT* pRects)

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

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

解説(Remarks)

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

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

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

vtbl 32 void CopySubresourceRegion(ID3D10Resource* pDstResource, DWORD DstSubresource, DWORD DstX, DWORD DstY, DWORD DstZ, ID3D10Resource* pSrcResource, DWORD SrcSubresource, D3D10_BOX* pSrcBox)

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

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

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

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

解説(Remarks)

ソースボックスは、ソースリソースのサイズ内に収まっている必要があります。コピー先の位置は絶対値です(相対値ではありません)。コピー先の位置はソースの位置からオフセットできますが、コピーする領域のサイズ(コピー先の位置を含む)はコピー先リソースに収まる必要があります。

リソースがバッファーの場合、すべての座標はバイト単位です。リソースがテクスチャの場合、すべての座標はテクセル単位です。

D3D10CalcSubresource は、サブリソースのインデックスを計算するためのヘルパー関数です。

CopySubresourceRegion は GPU 上でコピーを実行します(CPU による memcpy に似ています)。その結果、ソースとコピー先のリソースは次の条件を満たす必要があります。

CopySubresourceRegion はコピーのみをサポートし、ストレッチ、カラーキー、ブレンド、フォーマット変換はサポートしません。Direct3D 10.1 以降では、CopySubresourceRegion はいくつかのフォーマット型間でリソースデータを再解釈できます。詳細については、Direct3D 10.1 を使用したフォーマット変換 を参照してください。

アプリケーションでリソース全体をコピーする必要がある場合は、代わりに ID3D10Device::CopyResource を使用することをお勧めします。

CopySubresourceRegion は非同期呼び出しであり、ランタイムがコマンドバッファーキューに追加できます。この非同期動作は、データのコピー時に発生する可能性のあるパイプラインストールを取り除こうとします。詳細については、パフォーマンスに関する考慮事項 を参照してください。

Direct3D 10 と Direct3D 10.1 の違い:

Direct3D 10 には次の制限があります。

  • 深度ステンシルリソースをコピー先として使用することはできません。
  • イミュータブルなリソースをコピー先として使用することはできません。
  • マルチサンプルテクスチャをソースまたはコピー先のいずれとしても使用することはできません。
Direct3D 10.1 では、次の機能のサポートが追加されました。
  • 深度ステンシルバッファーをソースまたはコピー先として使用できます。
  • マルチサンプルリソースは、ソースとコピー先の両方がマルチサンプルの数と品質が同一である場合にのみ、ソースおよびコピー先として使用できます。ソースとコピー先でマルチサンプルの数と品質が異なる場合、または一方がマルチサンプルでもう一方がマルチサンプルでない(あるいはその逆の)場合、ID3D10Device::CopySubresourceRegion の呼び出しは失敗します。
  • 非圧縮リソースと圧縮リソースの間でコピーできます。コピー中、Direct3D 10.1 を使用したフォーマット変換 で指定されているフォーマット変換が自動的にサポートされます。非圧縮リソースは、少なくとも事前構造化かつ型付きである必要があります。また、ミップマップレベルの仮想サイズと物理サイズの違いも考慮する必要があります。
Note 深度ステンシルバッファーまたはマルチサンプルリソースに対して CopySubresourceRegion を使用する場合は、サブリソース全体をコピーする必要があります。また、DstXDstYDstZ パラメーターには 0 を、pSrcBox パラメーターには NULL を渡す必要があります。さらに、pSrcResource および pDstResource パラメーターでそれぞれ表されるソースとコピー先のリソースは、同一のサンプル数の値を持っている必要があります。

次のコードスニペットは、ソーステクスチャ内のボックス(位置 (120,100),(200,220))を、コピー先テクスチャ内の領域 (130,120),(210,240) にコピーします。

D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;

pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );

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

vtbl 33 void CopyResource(ID3D10Resource* pDstResource, ID3D10Resource* pSrcResource)

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

pDstResourceID3D10Resource*inコピー先リソース(ID3D10Resource を参照)へのポインター。
pSrcResourceID3D10Resource*inソースリソース(ID3D10Resource を参照)へのポインター。

解説(Remarks)

このメソッドは、GPU にコピー操作を実行させる点で特殊です(CPU による memcpy に似ています)。そのため、パフォーマンス向上のためのいくつかの制限があります。たとえば、ソースとコピー先のリソースは次のとおりでなければなりません。

CopyResource はコピーのみをサポートし、ストレッチ、カラーキー、ブレンド、フォーマット変換はサポートしません。Direct3D 10.1 以降では、CopyResource はいくつかのフォーマット型間でリソースデータを再解釈できます。詳細については、Direct3D 10.1 を使用したフォーマット変換 を参照してください。

イミュータブル リソースおよび 深度ステンシル リソースは、コピー先として使用できません。マルチサンプリング機能 を使用して作成されたリソースは、ソースまたはコピー先のいずれとしても使用できません。

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

リソース内のデータの一部のみをコピーする必要があるアプリケーションは、代わりに ID3D10Device::CopySubresourceRegion を使用する必要があります。

Direct3D 10 と Direct3D 10.1 の違い:

Direct3D 10.1 では、深度ステンシルリソースをソースまたはコピー先として使用できます。Direct3D 10.1 では、ソースとコピー先の両方がマルチサンプルの数と品質が同一である場合にのみ、マルチサンプルリソースをソースおよびコピー先として使用できます。ソースとコピー先でマルチサンプルの数と品質が異なる場合、または一方がマルチサンプルでもう一方がマルチサンプルでない場合、ID3D10Device::CopyResource の呼び出しは失敗します。

事前構造化かつ型付きのリソースとブロック圧縮テクスチャの間でコピーできます。Direct3D 10.1 を使用したフォーマット変換 を参照してください。

vtbl 34 void UpdateSubresource(ID3D10Resource* pDstResource, DWORD DstSubresource, D3D10_BOX* pDstBox, void* pSrcData, DWORD SrcRowPitch, DWORD SrcDepthPitch)

CPU が、マップできないメモリ内に作成されたサブリソースへ、メモリからデータをコピーします。解説を参照してください。

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

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

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

pSrcDatavoid*inメモリ内のソースデータへのポインター。
SrcRowPitchDWORDinソースデータの 1 行のサイズ。
SrcDepthPitchDWORDinソースデータの 1 深度スライスのサイズ。

解説(Remarks)

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

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

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

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

ソースの行ピッチとソースの深度ピッチのパラメーターをよりよく理解するために、次の 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 in memory

たとえば、次のコードスニペットは、2D テクスチャ内でコピー先領域を指定する方法を示しています。コピー先テクスチャが 512x512 で、この操作によって pData が指すデータがコピー先テクスチャ内の [(120,100)..(200,220)] にコピーされると仮定します。また、rowPitch が適切な値(上記のとおり)で初期化されていると仮定します。front と back はそれぞれ 0 と 1 に設定されます。front と back を等しくすることで、このボックスは技術的には空になるためです。


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

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

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


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

pd3dDevice->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );
Direct3D 10 と Direct3D 10.1 の違い:

Direct3D 10.1 では、深度ステンシルリソースをソースまたはコピー先として使用できます。

vtbl 35 void ClearRenderTargetView(ID3D10RenderTargetView* pRenderTargetView, FLOAT* ColorRGBA)

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

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

解説(Remarks)

レンダーターゲットを特定の整数値のビットパターンにクリアしたいアプリケーションは、このメソッドを使用する代わりに、画面に整列した四角形(quad)をレンダリングする必要があります。この理由は、このメソッドが入力として浮動小数点値を受け取り、それが元の整数と同じビットパターンを持つとは限らないためです。

Direct3D 9 と Direct3D 10 の違い:

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

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

vtbl 36 void ClearDepthStencilView(ID3D10DepthStencilView* pDepthStencilView, DWORD ClearFlags, FLOAT Depth, BYTE Stencil)

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

pDepthStencilViewID3D10DepthStencilView*inクリアする深度ステンシルへのポインター。
ClearFlagsDWORDinバッファーのどの部分をクリアするか。D3D10_CLEAR_FLAG を参照してください。
DepthFLOATinこの値で深度バッファーをクリアします。この値は 0 から 1 の間にクランプされます。
StencilBYTEinこの値でステンシルバッファーをクリアします。

解説(Remarks)

Direct3D 9 と Direct3D 10 の違い:

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

vtbl 37 void GenerateMips(ID3D10ShaderResourceView* pShaderResourceView)

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

pShaderResourceViewID3D10ShaderResourceView*inID3D10ShaderResourceView へのポインター。このシェーダーリソースに対してミップマップが生成されます。

解説(Remarks)

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

機能レベル 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)

その他のサポートされていないフォーマットの場合、このメソッドはエラーを出さずに失敗します。

vtbl 38 void ResolveSubresource(ID3D10Resource* pDstResource, DWORD DstSubresource, ID3D10Resource* pSrcResource, DWORD SrcSubresource, DXGI_FORMAT Format)

マルチサンプルリソースを非マルチサンプルリソースにコピーします。この API は、あるレンダーパスの結果であるレンダーターゲットを、2 つ目のレンダーパスの入力として再利用する場合に最も役立ちます。

pDstResourceID3D10Resource*inコピー先リソース。D3D10_USAGE_DEFAULT フラグを付けて作成され、シングルサンプルである必要があります。ID3D10Resource を参照してください。
DstSubresourceDWORDinコピー先サブリソースを識別する 0 から始まるインデックス。詳細については D3D10CalcSubresource を参照してください。
pSrcResourceID3D10Resource*inソースリソース。マルチサンプルである必要があります。
SrcSubresourceDWORDinソースリソースのソースサブリソース。
FormatDXGI_FORMATinマルチサンプルリソースをシングルサンプルリソースにどのように解決するかを示す DXGI_FORMAT。解説を参照してください。

解説(Remarks)

ソースとコピー先のリソースは、同じ リソースの種類 であり、同じ寸法を持つ必要があります。

ソースとコピー先は互換性のあるフォーマットである必要があります。これには 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_R32_UINT を指定できます)。
vtbl 39 void VSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin取得するバッファーの数。
ppConstantBuffersID3D10Buffer**outoptionalメソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。

解説(Remarks)

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

vtbl 40 void PSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**outoptionalデバイスによって返される シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

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

vtbl 41 void PSGetShader(ID3D10PixelShader** ppPixelShader)

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

ppPixelShaderID3D10PixelShader**outメソッドによって返されるピクセルシェーダー(ID3D10PixelShader を参照)へのポインターのアドレス。

解説(Remarks)

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

vtbl 42 void PSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

StartSlotDWORDinサンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumSamplersDWORDinデバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。
ppSamplersID3D10SamplerState**outoptionalデバイスによって返されるサンプラーステートインターフェイスポインター(ID3D10SamplerState を参照)の配列。

解説(Remarks)

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

vtbl 43 void VSGetShader(ID3D10VertexShader** ppVertexShader)

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

ppVertexShaderID3D10VertexShader**outメソッドによって返される頂点シェーダー(ID3D10VertexShader を参照)へのポインターのアドレス。

解説(Remarks)

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

vtbl 44 void PSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin取得するバッファーの数。
ppConstantBuffersID3D10Buffer**outoptionalメソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。

解説(Remarks)

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

vtbl 45 void IAGetInputLayout(ID3D10InputLayout** ppInputLayout)

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

ppInputLayoutID3D10InputLayout**out入力レイアウトオブジェクト(ID3D10InputLayout を参照)へのポインター。これは IA ステージによって読み取られる入力バッファーを記述します。

解説(Remarks)

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

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

vtbl 46 void IAGetVertexBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppVertexBuffers, DWORD* pStrides, DWORD* pOffsets)

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

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

解説(Remarks)

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

vtbl 47 void IAGetIndexBuffer(ID3D10Buffer** pIndexBuffer, DXGI_FORMAT* Format, DWORD* Offset)

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

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

解説(Remarks)

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

vtbl 48 void GSGetConstantBuffers(DWORD StartSlot, DWORD NumBuffers, ID3D10Buffer** ppConstantBuffers)

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

StartSlotDWORDin定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumBuffersDWORDin取得するバッファーの数。
ppConstantBuffersID3D10Buffer**outoptionalメソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。

解説(Remarks)

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

vtbl 49 void GSGetShader(ID3D10GeometryShader** ppGeometryShader)

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

ppGeometryShaderID3D10GeometryShader**outメソッドによって返されるジオメトリシェーダー(ID3D10GeometryShader を参照)へのポインターのアドレス。

解説(Remarks)

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

vtbl 50 void IAGetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY* pTopology)

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

pTopologyD3D_PRIMITIVE_TOPOLOGY*outプリミティブの種類とプリミティブデータの順序へのポインター(D3D10_PRIMITIVE_TOPOLOGY を参照)。
vtbl 51 void VSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**outoptionalデバイスによって返される シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

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

vtbl 52 void VSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

StartSlotDWORDinサンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumSamplersDWORDinデバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。
ppSamplersID3D10SamplerState**outoptionalデバイスによって返されるサンプラーステートインターフェイスポインター(ID3D10SamplerState を参照)の配列。

解説(Remarks)

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

vtbl 53 void GetPredication(ID3D10Predicate** ppPredicate, BOOL* pPredicateValue)

レンダリングプレディケートの状態を取得します。(ID3D10Device.GetPredication)

ppPredicateID3D10Predicate**outoptionalプレディケート(ID3D10Predicate を参照)へのポインターのアドレス。ここに格納される値は、デバイス作成時には NULL になります。
pPredicateValueBOOL*outoptionalプレディケートの比較値を格納するブール値のアドレス。デバイス作成時には FALSE です。

解説(Remarks)

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

vtbl 54 void GSGetShaderResources(DWORD StartSlot, DWORD NumViews, ID3D10ShaderResourceView** ppShaderResourceViews)

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

StartSlotDWORDinシェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumViewsDWORDinデバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。
ppShaderResourceViewsID3D10ShaderResourceView**outoptionalデバイスによって返される シェーダーリソースビュー インターフェイスの配列。

解説(Remarks)

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

vtbl 55 void GSGetSamplers(DWORD StartSlot, DWORD NumSamplers, ID3D10SamplerState** ppSamplers)

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

StartSlotDWORDinサンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。
NumSamplersDWORDinデバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。
ppSamplersID3D10SamplerState**outoptionalデバイスによって返されるサンプラーステートポインター(ID3D10SamplerState を参照)の配列。

解説(Remarks)

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

vtbl 56 void OMGetRenderTargets(DWORD NumViews, ID3D10RenderTargetView** ppRenderTargetViews, ID3D10DepthStencilView** ppDepthStencilView)

出力マージャーステージで使用可能なレンダーターゲットと深度ステンシルバッファーへのポインターを取得します。

NumViewsDWORDin取得するレンダーターゲットの数。
ppRenderTargetViewsID3D10RenderTargetView**outoptionalデバイスのレンダーターゲットで満たされるレンダーターゲットビュー(ID3D10RenderTargetView を参照)の配列へのポインター。レンダーターゲットの取得が不要な場合は、このパラメーターに NULL を指定します。
ppDepthStencilViewID3D10DepthStencilView**outoptionalデバイスの深度ステンシル情報で満たされる深度ステンシルビュー(ID3D10DepthStencilView を参照)へのポインター。深度ステンシルビューの取得が不要な場合は、このパラメーターに NULL を指定します。

解説(Remarks)

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

vtbl 57 void OMGetBlendState(ID3D10BlendState** ppBlendState, FLOAT* BlendFactor, DWORD* pSampleMask)

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

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

解説(Remarks)

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

vtbl 58 void OMGetDepthStencilState(ID3D10DepthStencilState** ppDepthStencilState, DWORD* pStencilRef)

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

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

解説(Remarks)

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

vtbl 59 void SOGetTargets(DWORD NumBuffers, ID3D10Buffer** ppSOTargets, DWORD* pOffsets)

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

NumBuffersDWORDin取得するバッファーの数。出力バッファーは最大 4 個まで取得できます。
ppSOTargetsID3D10Buffer**outoptionalデバイスから取得される出力バッファー(ID3D10Buffer を参照)の配列。
pOffsetsDWORD*outoptionalppSOTargets の各出力バッファーへのオフセットの配列。バッファーごとに 1 つのオフセットです。オフセット値はバイト単位です。

解説(Remarks)

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

vtbl 60 void RSGetState(ID3D10RasterizerState** ppRasterizerState)

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

ppRasterizerStateID3D10RasterizerState**outデバイスからの情報で満たすラスタライザーステートインターフェイス(ID3D10RasterizerState を参照)へのポインターのアドレス。

解説(Remarks)

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

vtbl 61 void RSGetViewports(DWORD* NumViewports, D3D10_VIEWPORT* pViewports)

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

NumViewportsDWORD*inoutpViewports 内のビューポートの数。pViewportsNULL の場合、現在バインドされているビューポートの数がここに格納されます。
pViewportsD3D10_VIEWPORT*outoptionalデバイスからの情報で満たされるビューポート(D3D10_VIEWPORT を参照)の配列。NumViewports が現在バインドされているビューポートの実際の数より大きい場合、配列の未使用のメンバーには 0 が格納されます。
vtbl 62 void RSGetScissorRects(DWORD* NumRects, RECT* pRects)

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

NumRectsDWORD*inout取得するシザー矩形の数。pRects が NULL の場合、現在バインドされているシザー矩形の数がここに格納されます。
pRectsRECT*outoptionalシザー矩形(D3D10_RECT を参照)の配列。NumRects が現在バインドされているシザー矩形の数より大きい場合、配列の未使用のメンバーには 0 が格納されます。
vtbl 63 HRESULT GetDeviceRemovedReason()

デバイスが削除された理由を取得します。(ID3D10Device.GetDeviceRemovedReason)

戻り値

Type: HRESULT

考えられる戻り値は次のとおりです。

これらの戻りコードの詳細については、DXGI_ERROR を参照してください。
vtbl 64 HRESULT SetExceptionMode(DWORD RaiseFlags)

例外モードフラグを取得します。(ID3D10Device.SetExceptionMode)

RaiseFlagsDWORDin1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D10_RAISE_FLAG に一覧化されています。既定値の 0 は、フラグがないことを意味します。

戻り値

Type: HRESULT

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

解説(Remarks)

エラー条件を継続不可能な例外に格上げするために、例外モードフラグを設定します。

エラーが発生すると、Direct3D デバイスは DEVICEREMOVED 状態になり、適切な例外フラグが設定されている場合は例外が発生します。発生した例外はアプリケーションを終了させるように設計されています。終了する前に、アプリケーションがデータを永続化する最後の機会は、UnhandledExceptionFilter を使用することです(構造化例外処理 を参照)。一般に、UnhandledExceptionFilter は、アプリケーションがクラッシュしているときにデータを(たとえばディスクに)永続化しようとするために利用されます。UnhandledExceptionFilter 中に実行されるコードは、(プロセスが破損している可能性があるため)確実に実行される保証はありません。UnhandledExceptionFilter が再びクラッシュする前に永続化できたデータは、疑わしいものとして扱い、破損していない新しいプロセスで検査して使用可能かどうかを確認する必要があります。

vtbl 65 DWORD GetExceptionMode()

例外モードフラグを取得します。(ID3D10Device.GetExceptionMode)

戻り値

Type: UINT

1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D10_RAISE_FLAG に一覧化されています。既定値の 0 は、フラグがないことを意味します。

解説(Remarks)

例外モードフラグは、エラー条件を継続不可能な例外に格上げするために使用します。

vtbl 66 HRESULT GetPrivateData(GUID* guid, DWORD* pDataSize, void* pData)

guid に関連付けられているデータをデバイスから取得します。

guidGUID*inデータに関連付けられている Guid。
pDataSizeDWORD*inoutデータのサイズ。
pDatavoid*outoptionalデバイスに格納されているデータへのポインター。pData が NULL の場合、DataSize も 0 でなければならず、guid に以前関連付けられていたデータはすべて破棄されます。

戻り値

Type: HRESULT

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

解説(Remarks)

返されるデータが、以前に SetPrivateDataInterface によって設定された IUnknown またはその派生クラスへのポインターである場合、そのインターフェイスは、プライベートデータが返される前に参照カウントが 1 つ増加します。

vtbl 67 HRESULT SetPrivateData(GUID* guid, DWORD DataSize, void* pData)

デバイスにデータを設定し、そのデータを guid に関連付けます。(ID3D10Device.SetPrivateData)

guidGUID*inデータに関連付けられている Guid。
DataSizeDWORDinデータのサイズ。
pDatavoid*inoptionalこのデバイスに格納するデータへのポインター。pData が NULL の場合、DataSize も 0 でなければならず、guid に以前関連付けられていたデータはすべて破棄されます。

戻り値

Type: HRESULT

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

解説(Remarks)

このメソッドでデバイスに格納されたデータは、ID3D10DeviceChild::GetPrivateData で取得できます。

このメソッドで設定されるデータと guid は、通常、アプリケーション定義です。

vtbl 68 HRESULT SetPrivateDataInterface(GUID* guid, IUnknown* pData)

IUnknown から派生したインターフェイスをこのデバイスに関連付け、そのインターフェイスをアプリケーション定義の guid に関連付けます。

guidGUID*inインターフェイスに関連付ける Guid。
pDataIUnknown*inoptionalデバイスオブジェクトに関連付ける IUnknown 派生インターフェイスへのポインター。その参照カウントは、設定時に増加し、ID3D10Device が破棄されたとき、または同じ GUIDSetPrivateData もしくは SetPrivateDataInterface を呼び出してデータが上書きされたときに減少します。

戻り値

Type: HRESULT

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

vtbl 69 void ClearState()

すべての既定のデバイス設定を復元し、デバイスを作成時の状態に戻します。

vtbl 70 void Flush()

コマンドバッファーにキューされたコマンドを GPU に送信します。

解説(Remarks)

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

アプリケーションが Direct3D の状態設定、表示(present)、または描画のコマンドを呼び出すと、それらのコマンドは内部コマンドバッファーにキューされます。Flush は、それらのコマンドを処理のために GPU に送信します。通常、これらのコマンドは、コマンドバッファーがいっぱいになったときやリソースをマップするときなど、Direct3D が必要と判断したときに自動的に GPU に送信されます。Flush は、コマンドを手動で送信します。

Flush は、CPU が任意の時間だけ待機する場合(SleepID3DX10ThreadPump::WaitForAllItemsWaitForVBlank を呼び出すときなど)に使用する必要があります。

フラッシュの仕組みの詳細については、Direct3D API 呼び出しの正確なプロファイリング (Direct3D 9) を参照してください。

vtbl 71 HRESULT CreateBuffer(D3D10_BUFFER_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Buffer** ppBuffer)

バッファー(頂点バッファー、インデックスバッファー、またはシェーダー定数バッファー)を作成します。

pDescD3D10_BUFFER_DESC*inバッファーの記述(D3D10_BUFFER_DESC を参照)へのポインター。
pInitialDataD3D10_SUBRESOURCE_DATA*inoptional初期化データ(D3D10_SUBRESOURCE_DATA を参照)へのポインター。領域の割り当てのみを行う場合は NULL を使用します。
ppBufferID3D10Buffer**outoptional作成されたバッファー(ID3D10Buffer Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(S_FALSE は合格を示します)。

戻り値

Type: HRESULT

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

解説(Remarks)

サンプルコードについては、次を参照してください。

vtbl 72 HRESULT CreateTexture1D(D3D10_TEXTURE1D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture1D** ppTexture1D)

1D テクスチャの配列を作成します(Texture1D を参照)。

pDescD3D10_TEXTURE1D_DESC*in1D テクスチャの記述(D3D10_TEXTURE1D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D10_SUBRESOURCE_DATA*inoptionalサブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。
ppTexture1DID3D10Texture1D**out作成されたテクスチャ(ID3D10Texture1D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。

解説(Remarks)

CreateTexture1D は、1D テクスチャの配列を格納する 1D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。

vtbl 73 HRESULT CreateTexture2D(D3D10_TEXTURE2D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture2D** ppTexture2D)

2D テクスチャの配列を作成します(Texture2D を参照)。

pDescD3D10_TEXTURE2D_DESC*in2D テクスチャの記述(D3D10_TEXTURE2D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D10_SUBRESOURCE_DATA*inoptionalサブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順、次にミップレベル順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。
ppTexture2DID3D10Texture2D**out作成されたテクスチャ(ID3D10Texture2D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。

解説(Remarks)

CreateTexture2D は、1D テクスチャの配列を格納する 2D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。

vtbl 74 HRESULT CreateTexture3D(D3D10_TEXTURE3D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture3D** ppTexture3D)

単一の 3D テクスチャを作成します(Texture3D を参照)。

pDescD3D10_TEXTURE3D_DESC*in3D テクスチャの記述(D3D10_TEXTURE3D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D10_SUBRESOURCE_DATA*inoptionalサブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順、次にスライスインデックス順、次にミップレベル順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。
ppTexture3DID3D10Texture3D**out作成されたテクスチャ(ID3D10Texture3D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。

解説(Remarks)

CreateTexture3D は、1D テクスチャの配列を格納する 3D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。

vtbl 75 HRESULT CreateShaderResourceView(ID3D10Resource* pResource, D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D10ShaderResourceView** ppSRView)

リソース内のデータにアクセスするためのシェーダーリソースビューを作成します。(ID3D10Device.CreateShaderResourceView)

pResourceID3D10Resource*inシェーダーへの入力となる リソース へのポインター。このリソースは D3D10_BIND_SHADER_RESOURCE フラグを付けて作成されている必要があります。
pDescD3D10_SHADER_RESOURCE_VIEW_DESC*inoptionalシェーダーリソースビューの記述(D3D10_SHADER_RESOURCE_VIEW_DESC を参照)へのポインター。リソース全体にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。
ppSRViewID3D10ShaderResourceView**outoptionalID3D10ShaderResourceView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

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

解説(Remarks)

リソースは 1 つ以上の サブリソース で構成され、ビューはパイプラインにどのサブリソースへのアクセスを許可するかを識別します。さらに、各リソースはビューを使用してパイプラインにバインドされます。シェーダーリソースビューは、任意のバッファーまたはテクスチャリソースを次の API メソッドを使用して シェーダーステージ にバインドするために設計されています。VSSetShaderResourcesGSSetShaderResourcesPSSetShaderResources です。

ビューは完全に型付けされているため、タイプレスリソースはパイプラインにバインドされると完全に型付けされます。

vtbl 76 HRESULT CreateRenderTargetView(ID3D10Resource* pResource, D3D10_RENDER_TARGET_VIEW_DESC* pDesc, ID3D10RenderTargetView** ppRTView)

リソースデータにアクセスするためのレンダーターゲットビューを作成します。

pResourceID3D10Resource*inレンダーターゲットとして機能する リソース へのポインター。このリソースは D3D10_BIND_RENDER_TARGET フラグを付けて作成されている必要があります。
pDescD3D10_RENDER_TARGET_VIEW_DESC*inoptionalレンダーターゲットビューの記述(D3D10_RENDER_TARGET_VIEW_DESC を参照)へのポインター。リソース全体のミップマップレベル 0 にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。
ppRTViewID3D10RenderTargetView**outoptionalID3D10RenderTargetView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

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

解説(Remarks)

レンダーターゲットビューは、ID3D10Device::OMSetRenderTargets を呼び出すことで、出力マージャーステージ にバインドできます。

vtbl 77 HRESULT CreateDepthStencilView(ID3D10Resource* pResource, D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D10DepthStencilView** ppDepthStencilView)

リソースデータにアクセスするための深度ステンシルビューを作成します。(ID3D10Device.CreateDepthStencilView)

pResourceID3D10Resource*in深度ステンシルサーフェスとして機能する リソース へのポインター。このリソースは D3D10_BIND_DEPTH_STENCIL フラグを付けて作成されている必要があります。
pDescD3D10_DEPTH_STENCIL_VIEW_DESC*inoptional深度ステンシルビューの記述(D3D10_DEPTH_STENCIL_VIEW_DESC を参照)へのポインター。リソース全体のミップマップレベル 0 にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。
ppDepthStencilViewID3D10DepthStencilView**outoptionalID3D10DepthStencilView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

Type: HRESULT

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

解説(Remarks)

深度ステンシルビューは、ID3D10Device::OMSetRenderTargets を呼び出すことで、出力マージャーステージ にバインドできます。

さらに背景情報については、深度ステンシルに関する プログラミングガイドのページ を参照してください。

vtbl 78 HRESULT CreateInputLayout(D3D10_INPUT_ELEMENT_DESC* pInputElementDescs, DWORD NumElements, void* pShaderBytecodeWithInputSignature, UINT_PTR BytecodeLength, ID3D10InputLayout** ppInputLayout)

入力アセンブラーステージの入力バッファーデータを記述する入力レイアウトオブジェクトを作成します。(ID3D10Device.CreateInputLayout)

pInputElementDescsD3D10_INPUT_ELEMENT_DESC*in入力アセンブラーステージの入力データ型の配列。各型は要素の記述(D3D10_INPUT_ELEMENT_DESC を参照)で記述されます。
NumElementsDWORDin入力要素の配列内の入力データ型の数。
pShaderBytecodeWithInputSignaturevoid*inコンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。コンパイル済みシェーダーコードには 入力シグネチャ が含まれており、これが要素の配列に対して検証されます。解説を参照してください。
BytecodeLengthUINT_PTRinコンパイル済みシェーダーのサイズ。
ppInputLayoutID3D10InputLayout**outoptional作成された入力レイアウトオブジェクト(ID3D10InputLayout Interface を参照)へのポインター。他の入力パラメーターを検証するには、このポインターを NULL に設定し、メソッドが S_FALSE を返すことを確認します。

戻り値

Type: HRESULT

メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。

解説(Remarks)

入力レイアウトオブジェクトを作成した後、draw API を呼び出す前に、それを入力アセンブラーステージにバインドする必要があります。サンプルコードについては、入力アセンブラーステージの概要 (Direct3D 10) を参照してください。

シェーダーシグネチャから入力レイアウトオブジェクトを作成すると、その入力レイアウトオブジェクトは、同一の入力シグネチャ(セマンティクスを含む)を持つ他の任意のシェーダーで再利用できます。これにより、同一の入力を持つ多数のシェーダーを扱う場合に、入力レイアウトオブジェクトの作成を簡素化できます。

入力レイアウト宣言内のデータ型がシェーダー入力シグネチャ内のデータ型と一致しない場合、CreateInputLayout はコンパイル中に警告を生成します。この警告は、レジスタから読み取る際にデータが再解釈される可能性があるという事実に注意を促すだけのものです。(再解釈が意図的である場合は)この警告を無視するか、両方の宣言でデータ型を一致させて警告を解消できます。データ変換規則 の概要では、データ型変換に適用される規則について説明しています。

Direct3D 9 と Direct3D 10 の違い:

入力レイアウトを使用して頂点データをシェーダー入力にマッピングする方法は、Direct3D 10 における新しい方式であり、パフォーマンスを向上させます。

Direct3D 10 では、入力レイアウトオブジェクトの作成時に頂点データがシェーダー入力にマッピングされます。一方、Direct3D 9 では、このマッピングは Draw の時点で、現在バインドされている頂点宣言、頂点バッファー、頂点シェーダーに基づいて行われていました。入力レイアウトオブジェクトの作成時にこのマッピングを行うことで、この再マッピングが不要になるため、Draw の時点でのドライバーの追加のリンク作業が削減または排除されます。

vtbl 79 HRESULT CreateVertexShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D10VertexShader** ppVertexShader)

コンパイル済みシェーダーから頂点シェーダーオブジェクトを作成します。(ID3D10Device.CreateVertexShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。
BytecodeLengthUINT_PTRinコンパイル済み頂点シェーダーのサイズ。
ppVertexShaderID3D10VertexShader**outoptionalID3D10VertexShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。

戻り値

Type: HRESULT

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

vtbl 80 HRESULT CreateGeometryShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D10GeometryShader** ppGeometryShader)

ジオメトリシェーダーを作成します。(ID3D10Device.CreateGeometryShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。
BytecodeLengthUINT_PTRinコンパイル済みジオメトリシェーダーのサイズ。
ppGeometryShaderID3D10GeometryShader**outoptionalID3D10GeometryShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。

戻り値

Type: HRESULT

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

解説(Remarks)

作成後、シェーダーは ID3D10Device::GSSetShader を呼び出すことでデバイスに設定できます。

vtbl 81 HRESULT CreateGeometryShaderWithStreamOutput(void* pShaderBytecode, UINT_PTR BytecodeLength, D3D10_SO_DECLARATION_ENTRY* pSODeclaration, DWORD NumEntries, DWORD OutputStreamStride, ID3D10GeometryShader** ppGeometryShader)

ストリーム出力バッファーに書き込めるジオメトリシェーダーを作成します。(ID3D10Device.CreateGeometryShaderWithStreamOutput)

pShaderBytecodevoid*in

標準のジオメトリシェーダーとストリーム出力のための、コンパイル済みジオメトリシェーダーへのポインター。このポインターの取得方法については、コンパイル済みシェーダーへのポインターの取得 を参照してください。

ジオメトリシェーダーを使用せずにストリーム出力を作成するには、前段のステージの出力シグネチャへのポインターを渡します。この出力シグネチャを取得するには、D3DGetOutputSignatureBlob コンパイラ関数を呼び出します。前段のステージで使用されるコンパイル済み 頂点シェーダー へのポインターを渡すこともできます。このコンパイル済みシェーダーは、データの出力シグネチャを提供します。

BytecodeLengthUINT_PTRinコンパイル済みジオメトリシェーダーのサイズ。
pSODeclarationD3D10_SO_DECLARATION_ENTRY*inoptionalD3D10_SO_DECLARATION_ENTRY 配列へのポインター。NumEntries> 0 の場合、NULL にはできません。
NumEntriesDWORDinpSODeclaration が指す配列内のエントリの数。最小 0、最大 64。
OutputStreamStrideDWORDinpSODeclaration が指す配列内の各要素のサイズ(バイト単位)。このパラメーターは、pSODeclaration 内のすべてのエントリで出力スロットが 0 の場合にのみ使用されます。
ppGeometryShaderID3D10GeometryShader**outoptionalID3D10GeometryShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。

戻り値

Type: HRESULT

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

解説(Remarks)

CreateGeometryShaderWithStreamOutput の使用方法の詳細については、ストリーム出力を伴うジオメトリシェーダーオブジェクトの作成 を参照してください。

vtbl 82 HRESULT CreatePixelShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D10PixelShader** ppPixelShader)

ピクセルシェーダーを作成します。(ID3D10Device.CreatePixelShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。
BytecodeLengthUINT_PTRinコンパイル済みピクセルシェーダーのサイズ。
ppPixelShaderID3D10PixelShader**outoptionalID3D10PixelShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。

戻り値

Type: HRESULT

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

解説(Remarks)

ピクセルシェーダーの作成後、ID3D10Device::PSSetShader を使用してデバイスに設定できます。

vtbl 83 HRESULT CreateBlendState(D3D10_BLEND_DESC* pBlendStateDesc, ID3D10BlendState** ppBlendState)

出力マージャーステージのブレンドステートをカプセル化するブレンドステートオブジェクトを作成します。(ID3D10Device.CreateBlendState)

pBlendStateDescD3D10_BLEND_DESC*inブレンドステートの記述(D3D10_BLEND_DESC を参照)へのポインター。
ppBlendStateID3D10BlendState**outoptional作成されたブレンドステートオブジェクト(ID3D10BlendState Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

解説(Remarks)

アプリケーションは、最大 4096 個の一意なブレンドステートオブジェクトを作成できます。オブジェクトを作成するたびに、ランタイムは以前のオブジェクトが同じステートを持つかどうかを確認します。そのような以前のオブジェクトが存在する場合、ランタイムは重複するオブジェクトを作成する代わりに、以前のインスタンスへのポインターを返します。

vtbl 84 HRESULT CreateDepthStencilState(D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D10DepthStencilState** ppDepthStencilState)

出力マージャーステージの深度ステンシルテスト情報をカプセル化する深度ステンシルステートオブジェクトを作成します。(ID3D10Device.CreateDepthStencilState)

pDepthStencilDescD3D10_DEPTH_STENCIL_DESC*in深度ステンシルステートの記述(D3D10_DEPTH_STENCIL_DESC を参照)へのポインター。
ppDepthStencilStateID3D10DepthStencilState**outoptional作成された深度ステンシルステートオブジェクト(ID3D10DepthStencilState Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

解説(Remarks)

デバイス上では、一度に 4096 個の一意な深度ステンシルステートオブジェクトを作成できます。

アプリケーションが既存の深度ステンシルステートと同じ記述で深度ステンシルステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意な深度ステンシルステートオブジェクトの総数は変わりません。

vtbl 85 HRESULT CreateRasterizerState(D3D10_RASTERIZER_DESC* pRasterizerDesc, ID3D10RasterizerState** ppRasterizerState)

ラスタライザーステージの動作を指定するラスタライザーステートオブジェクトを作成します。(ID3D10Device.CreateRasterizerState)

pRasterizerDescD3D10_RASTERIZER_DESC*inラスタライザーステートの記述(D3D10_RASTERIZER_DESC を参照)へのポインター。
ppRasterizerStateID3D10RasterizerState**outoptional作成されたラスタライザーステートオブジェクト(ID3D10RasterizerState Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

解説(Remarks)

デバイス上では、一度に 4096 個の一意なラスタライザーステートオブジェクトを作成できます。

アプリケーションが既存のラスタライザーステートと同じ記述でラスタライザーステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意なラスタライザーステートオブジェクトの総数は変わりません。

vtbl 86 HRESULT CreateSamplerState(D3D10_SAMPLER_DESC* pSamplerDesc, ID3D10SamplerState** ppSamplerState)

テクスチャのサンプリング情報をカプセル化するサンプラーステートオブジェクトを作成します。(ID3D10Device.CreateSamplerState)

pSamplerDescD3D10_SAMPLER_DESC*inサンプラーステートの記述(D3D10_SAMPLER_DESC を参照)へのポインター。
ppSamplerStateID3D10SamplerState**outoptional作成されたサンプラーステートオブジェクト(ID3D10SamplerState Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

解説(Remarks)

デバイス上では、一度に 4096 個の一意なサンプラーステートオブジェクトを作成できます。

アプリケーションが既存のサンプラーステートと同じ記述でサンプラーステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意なサンプラーステートオブジェクトの総数は変わりません。

vtbl 87 HRESULT CreateQuery(D3D10_QUERY_DESC* pQueryDesc, ID3D10Query** ppQuery)

このインターフェイスは、GPU から情報をクエリするためのメソッドをカプセル化します。(ID3D10Device.CreateQuery)

pQueryDescD3D10_QUERY_DESC*inクエリの記述(D3D10_QUERY_DESC を参照)へのポインター。
ppQueryID3D10Query**outoptional作成されたクエリオブジェクト(ID3D10Query Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

vtbl 88 HRESULT CreatePredicate(D3D10_QUERY_DESC* pPredicateDesc, ID3D10Predicate** ppPredicate)

プレディケートを作成します。(ID3D10Device.CreatePredicate)

pPredicateDescD3D10_QUERY_DESC*inクエリの記述へのポインター。クエリの型は D3D10_QUERY_SO_OVERFLOW_PREDICATE または D3D10_QUERY_OCCLUSION_PREDICATE でなければなりません(D3D10_QUERY_DESC を参照)。
ppPredicateID3D10Predicate**outoptionalプレディケート(ID3D10Predicate Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

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

vtbl 89 HRESULT CreateCounter(D3D10_COUNTER_DESC* pCounterDesc, ID3D10Counter** ppCounter)

GPU のパフォーマンスを測定するためのカウンターオブジェクトを作成します。(ID3D10Device.CreateCounter)

pCounterDescD3D10_COUNTER_DESC*inカウンターの記述(D3D10_COUNTER_DESC を参照)へのポインター。
ppCounterID3D10Counter**outoptionalカウンター(ID3D10Counter Interface を参照)へのポインターのアドレス。

戻り値

Type: HRESULT

この関数が成功した場合、S_OK を返します。失敗した場合、考えられる戻り値は S_FALSEE_OUTOFMEMORYDXGI_ERROR_UNSUPPORTEDDXGI_ERROR_NONEXCLUSIVEE_INVALIDARG です。

DXGI_ERROR_UNSUPPORTED は、アプリケーションが既知の(well-known)カウンターの作成を要求したが、現在のデバイスがそれをサポートしていない場合に返されます。

DXGI_ERROR_NONEXCLUSIVE は、別のデバイスオブジェクトが現在カウンターを使用しているため、現時点ではこのデバイスがそれらを使用できないことを示します。

E_INVALIDARG は、範囲外の既知のカウンターまたはデバイス依存のカウンターが要求された場合、あるいは同時にアクティブなカウンターが使い果たされた場合に返されます。

vtbl 90 HRESULT CheckFormatSupport(DXGI_FORMAT Format, DWORD* pFormatSupport)

インストールされているビデオデバイスでの、指定されたフォーマットのサポート状況を取得します。(ID3D10Device.CheckFormatSupport)

FormatDXGI_FORMATinサポートを確認するフォーマットを記述する DXGI_FORMAT 列挙。
pFormatSupportDWORD*out指定されたフォーマットがインストールされているデバイスでどのようにサポートされているかを示す D3D10_FORMAT_SUPPORT 列挙値のビットフィールド。これらの値は OR で結合されています。

戻り値

Type: HRESULT

成功した場合は S_OK を返します。それ以外の場合、Format パラメーターが NULL のときは E_INVALIDARG を、記述されたフォーマットが存在しないときは E_FAIL を返します。

解説(Remarks)

ほとんどのフォーマットのサポートは Direct3D の機能レベルに基づいています。サポートの確認が必要なのは、いくつかの特定のユースケースのみです。詳細については、Direct3D 機能レベル 10.0 ハードウェアのフォーマットサポート および Direct3D 機能レベル 10.1 ハードウェアのフォーマットサポート を参照してください。

vtbl 91 HRESULT CheckMultisampleQualityLevels(DXGI_FORMAT Format, DWORD SampleCount, DWORD* pNumQualityLevels)

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

FormatDXGI_FORMATinテクスチャのフォーマット。DXGI_FORMAT を参照してください。
SampleCountDWORDinマルチサンプリング時のサンプル数。
pNumQualityLevelsDWORD*outアダプターがサポートする品質レベルの数。解説を参照してください。

戻り値

Type: HRESULT

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

解説(Remarks)

テクスチャをマルチサンプリングする場合、アダプターで使用可能な品質レベルの数は、使用するテクスチャのフォーマットと要求されるサンプル数に依存します。d3d10.h の D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT で定義される最大サンプル数は 32 です。pNumQualityLevels の戻り値が 0 の場合、そのフォーマットとサンプル数の組み合わせは、インストールされているアダプターではサポートされていません。

さらに、品質レベルの定義は各ハードウェアベンダーに委ねられていますが、Direct3D はこの情報の検出に役立つ機能を提供していません。

Direct3D 10.1 デバイスは、R32G32B32A32 および R32G32B32 フォーマットを除くすべてのフォーマットで 4x MSAA をサポートする必要があります。

vtbl 92 void CheckCounterInfo(D3D10_COUNTER_INFO* pCounterInfo)

カウンターの情報を取得します。(ID3D10Device.CheckCounterInfo)

pCounterInfoD3D10_COUNTER_INFO*outカウンター情報(D3D10_COUNTER_INFO を参照)へのポインター。
vtbl 93 HRESULT CheckCounter(D3D10_COUNTER_DESC* pDesc, D3D10_COUNTER_TYPE* pType, DWORD* pActiveCounters, LPSTR szName, DWORD* pNameLength, LPSTR szUnits, DWORD* pUnitsLength, LPSTR szDescription, DWORD* pDescriptionLength)

既存のカウンターの型、名前、測定単位、および説明を取得します。(ID3D10Device.CheckCounter)

pDescD3D10_COUNTER_DESC*inカウンターの記述(D3D10_COUNTER_DESC を参照)へのポインター。どのカウンターの情報を取得するかを指定します。
pTypeD3D10_COUNTER_TYPE*outカウンターのデータ型(D3D10_COUNTER_TYPE を参照)へのポインター。取得するカウンターのデータ型を指定します。
pActiveCountersDWORD*outこのカウンター型を作成するために必要なハードウェアカウンターの数へのポインター。同じカウンター型のすべてのインスタンスは、同じハードウェアカウンターを使用します。
szNameLPSTRoutoptionalカウンターの簡単な名前で満たされる文字列。アプリケーションがカウンターの名前を必要としない場合は NULL でも構いません。
pNameLengthDWORD*inoutoptionalszName に返される文字列の長さ。NULL でも構いません。
szUnitsLPSTRoutoptionalポインターが指すメモリに文字列を格納するのに十分な領域がある場合の、カウンターが測定する単位の名前。NULL でも構いません。返される文字列は常に英語です。
pUnitsLengthDWORD*inoutoptionalszUnits に返される文字列の長さ。NULL でも構いません。
szDescriptionLPSTRoutoptionalポインターが指すメモリに文字列を格納するのに十分な領域がある場合の、カウンターの説明。NULL でも構いません。返される文字列は常に英語です。
pDescriptionLengthDWORD*inoutoptionalszDescription に返される文字列の長さ。NULL でも構いません。

戻り値

Type: HRESULT

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

解説(Remarks)

長さのパラメーターは NULL にできます。これは、アプリケーションが長さにも対応する文字列の値にも関心がないことを示します。長さのパラメーターが NULL 以外で、対応する文字列が NULL の場合、長さのパラメーターの入力値は無視され、対応する文字列の長さ(終端の NULL を含む)が長さのパラメーターを通じて返されます。長さと対応するパラメーターの両方が NULL 以外の場合、長さの入力値がチェックされて十分な領域があることが確認され、その後、文字列の長さ(終端の NULL 文字を含む)が長さのパラメーターを通じて渡されます。

vtbl 94 DWORD GetCreationFlags()

D3D10CreateDevice でデバイスを作成した呼び出しで使用されたフラグを取得します。

戻り値

Type: UINT

デバイスの作成に使用されたフラグを含むビットフィールド。D3D10_CREATE_DEVICE_FLAG を参照してください。

vtbl 95 HRESULT OpenSharedResource(HANDLE hResource, GUID* ReturnedInterface, void** ppResource)

別の Direct3D デバイスで作成された共有リソースへのアクセスをデバイスに与えます。

hResourceHANDLEinリソースハンドル。解説を参照してください。
ReturnedInterfaceGUID*inリソースインターフェイスのグローバル一意識別子(GUID)。解説を参照してください。
ppResourcevoid**outoptionalアクセスを取得しようとしているリソースへのポインターのアドレス。

戻り値

Type: HRESULT

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

解説(Remarks)

Direct3D 10 の 2 つのデバイス間でリソースを共有するには、そのリソースが ID3D10Device インターフェイスを使用して作成された場合、D3D10_RESOURCE_MISC_SHARED フラグを付けて作成されている必要があります。IDXGIDevice インターフェイスを使用して作成された場合、そのリソースは常に共有されます。

リソースへのインターフェイスの REFIID(GUID)は、__uuidof() マクロを使用して取得できます。たとえば、__uuidof(ID3D10Buffer) は、バッファーリソースへのインターフェイスの GUID を取得します。

Direct3D 10 の 2 つのデバイス間でリソースを共有する場合、リソースの一意なハンドルは、リソースに対して IDXGIResource インターフェイスをクエリし、続いて GetSharedHandle を呼び出すことで取得できます。


IDXGIResource* pOtherResource(NULL);
hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource );
HANDLE sharedHandle;
pOtherResource->GetSharedHandle(&sharedHandle);
      

共有できるリソースは、ミップマップされていない 2D テクスチャのみです。

Direct3D 9 デバイスと Direct3D 10 デバイスの間でリソースを共有するには、そのテクスチャが CreateTexturepSharedHandle 引数を使用して作成されている必要があります。共有された Direct3D 9 のハンドルは、その後 OpenSharedResource の hResource 引数に渡されます。

次のコードは、関連するメソッド呼び出しを示しています。


sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 
pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 
... 
pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); 
tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); 
tempResource10->Release(); 
// now use pTex2D_10 with pDevice10   
      

D3D9 から D3D10 に共有されるテクスチャには、次の制限があります。

共有テクスチャが 1 つのデバイスで更新された場合、そのデバイスで ID3D10Device::Flush を呼び出す必要があります。
vtbl 96 void SetTextFilterSize(DWORD Width, DWORD Height)

このメソッドは実装されていません。(ID3D10Device.SetTextFilterSize)

WidthDWORDin該当なし
HeightDWORDin該当なし

解説(Remarks)

このメソッドは実装されておらず、使用しないでください。

vtbl 97 void GetTextFilterSize(DWORD* pWidth, DWORD* pHeight)

このメソッドは実装されていません。(ID3D10Device.GetTextFilterSize)

pWidthDWORD*outoptional該当なし
pHeightDWORD*outoptional該当なし

解説(Remarks)

このメソッドは実装されておらず、使用しないでください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ID3D10Device "{9B7E4C0F-342C-4106-A19F-4F2704F689F0}"
#usecom global ID3D10Device IID_ID3D10Device "{}"
#comfunc global ID3D10Device_VSSetConstantBuffers                  3 int,int,sptr
#comfunc global ID3D10Device_PSSetShaderResources                  4 int,int,sptr
#comfunc global ID3D10Device_PSSetShader                           5 sptr
#comfunc global ID3D10Device_PSSetSamplers                         6 int,int,sptr
#comfunc global ID3D10Device_VSSetShader                           7 sptr
#comfunc global ID3D10Device_DrawIndexed                           8 int,int,int
#comfunc global ID3D10Device_Draw                                  9 int,int
#comfunc global ID3D10Device_PSSetConstantBuffers                  10 int,int,sptr
#comfunc global ID3D10Device_IASetInputLayout                      11 sptr
#comfunc global ID3D10Device_IASetVertexBuffers                    12 int,int,sptr,var,var
#comfunc global ID3D10Device_IASetIndexBuffer                      13 sptr,int,int
#comfunc global ID3D10Device_DrawIndexedInstanced                  14 int,int,int,int,int
#comfunc global ID3D10Device_DrawInstanced                         15 int,int,int,int
#comfunc global ID3D10Device_GSSetConstantBuffers                  16 int,int,sptr
#comfunc global ID3D10Device_GSSetShader                           17 sptr
#comfunc global ID3D10Device_IASetPrimitiveTopology                18 int
#comfunc global ID3D10Device_VSSetShaderResources                  19 int,int,sptr
#comfunc global ID3D10Device_VSSetSamplers                         20 int,int,sptr
#comfunc global ID3D10Device_SetPredication                        21 sptr,int
#comfunc global ID3D10Device_GSSetShaderResources                  22 int,int,sptr
#comfunc global ID3D10Device_GSSetSamplers                         23 int,int,sptr
#comfunc global ID3D10Device_OMSetRenderTargets                    24 int,sptr,sptr
#comfunc global ID3D10Device_OMSetBlendState                       25 sptr,var,int
#comfunc global ID3D10Device_OMSetDepthStencilState                26 sptr,int
#comfunc global ID3D10Device_SOSetTargets                          27 int,sptr,var
#comfunc global ID3D10Device_DrawAuto                              28
#comfunc global ID3D10Device_RSSetState                            29 sptr
#comfunc global ID3D10Device_RSSetViewports                        30 int,var
#comfunc global ID3D10Device_RSSetScissorRects                     31 int,var
#comfunc global ID3D10Device_CopySubresourceRegion                 32 sptr,int,int,int,int,sptr,int,var
#comfunc global ID3D10Device_CopyResource                          33 sptr,sptr
#comfunc global ID3D10Device_UpdateSubresource                     34 sptr,int,var,sptr,int,int
#comfunc global ID3D10Device_ClearRenderTargetView                 35 sptr,var
#comfunc global ID3D10Device_ClearDepthStencilView                 36 sptr,int,float,int
#comfunc global ID3D10Device_GenerateMips                          37 sptr
#comfunc global ID3D10Device_ResolveSubresource                    38 sptr,int,sptr,int,int
#comfunc global ID3D10Device_VSGetConstantBuffers                  39 int,int,sptr
#comfunc global ID3D10Device_PSGetShaderResources                  40 int,int,sptr
#comfunc global ID3D10Device_PSGetShader                           41 sptr
#comfunc global ID3D10Device_PSGetSamplers                         42 int,int,sptr
#comfunc global ID3D10Device_VSGetShader                           43 sptr
#comfunc global ID3D10Device_PSGetConstantBuffers                  44 int,int,sptr
#comfunc global ID3D10Device_IAGetInputLayout                      45 sptr
#comfunc global ID3D10Device_IAGetVertexBuffers                    46 int,int,sptr,var,var
#comfunc global ID3D10Device_IAGetIndexBuffer                      47 sptr,var,var
#comfunc global ID3D10Device_GSGetConstantBuffers                  48 int,int,sptr
#comfunc global ID3D10Device_GSGetShader                           49 sptr
#comfunc global ID3D10Device_IAGetPrimitiveTopology                50 var
#comfunc global ID3D10Device_VSGetShaderResources                  51 int,int,sptr
#comfunc global ID3D10Device_VSGetSamplers                         52 int,int,sptr
#comfunc global ID3D10Device_GetPredication                        53 sptr,var
#comfunc global ID3D10Device_GSGetShaderResources                  54 int,int,sptr
#comfunc global ID3D10Device_GSGetSamplers                         55 int,int,sptr
#comfunc global ID3D10Device_OMGetRenderTargets                    56 int,sptr,sptr
#comfunc global ID3D10Device_OMGetBlendState                       57 sptr,var,var
#comfunc global ID3D10Device_OMGetDepthStencilState                58 sptr,var
#comfunc global ID3D10Device_SOGetTargets                          59 int,sptr,var
#comfunc global ID3D10Device_RSGetState                            60 sptr
#comfunc global ID3D10Device_RSGetViewports                        61 var,var
#comfunc global ID3D10Device_RSGetScissorRects                     62 var,var
#comfunc global ID3D10Device_GetDeviceRemovedReason                63
#comfunc global ID3D10Device_SetExceptionMode                      64 int
#comfunc global ID3D10Device_GetExceptionMode                      65
#comfunc global ID3D10Device_GetPrivateData                        66 var,var,sptr
#comfunc global ID3D10Device_SetPrivateData                        67 var,int,sptr
#comfunc global ID3D10Device_SetPrivateDataInterface               68 var,sptr
#comfunc global ID3D10Device_ClearState                            69
#comfunc global ID3D10Device_Flush                                 70
#comfunc global ID3D10Device_CreateBuffer                          71 var,var,sptr
#comfunc global ID3D10Device_CreateTexture1D                       72 var,var,sptr
#comfunc global ID3D10Device_CreateTexture2D                       73 var,var,sptr
#comfunc global ID3D10Device_CreateTexture3D                       74 var,var,sptr
#comfunc global ID3D10Device_CreateShaderResourceView              75 sptr,var,sptr
#comfunc global ID3D10Device_CreateRenderTargetView                76 sptr,var,sptr
#comfunc global ID3D10Device_CreateDepthStencilView                77 sptr,var,sptr
#comfunc global ID3D10Device_CreateInputLayout                     78 var,int,sptr,sptr,sptr
#comfunc global ID3D10Device_CreateVertexShader                    79 sptr,sptr,sptr
#comfunc global ID3D10Device_CreateGeometryShader                  80 sptr,sptr,sptr
#comfunc global ID3D10Device_CreateGeometryShaderWithStreamOutput  81 sptr,sptr,var,int,int,sptr
#comfunc global ID3D10Device_CreatePixelShader                     82 sptr,sptr,sptr
#comfunc global ID3D10Device_CreateBlendState                      83 var,sptr
#comfunc global ID3D10Device_CreateDepthStencilState               84 var,sptr
#comfunc global ID3D10Device_CreateRasterizerState                 85 var,sptr
#comfunc global ID3D10Device_CreateSamplerState                    86 var,sptr
#comfunc global ID3D10Device_CreateQuery                           87 var,sptr
#comfunc global ID3D10Device_CreatePredicate                       88 var,sptr
#comfunc global ID3D10Device_CreateCounter                         89 var,sptr
#comfunc global ID3D10Device_CheckFormatSupport                    90 int,var
#comfunc global ID3D10Device_CheckMultisampleQualityLevels         91 int,int,var
#comfunc global ID3D10Device_CheckCounterInfo                      92 var
#comfunc global ID3D10Device_CheckCounter                          93 var,var,var,var,var,var,var,var,var
#comfunc global ID3D10Device_GetCreationFlags                      94
#comfunc global ID3D10Device_OpenSharedResource                    95 sptr,var,sptr
#comfunc global ID3D10Device_SetTextFilterSize                     96 int,int
#comfunc global ID3D10Device_GetTextFilterSize                     97 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。