ID3D10Device
COM公式ドキュメント
デバイスインターフェイスは、Direct3D 10.0 の仮想アダプターを表します。レンダリングの実行や Direct3D リソースの作成に使用されます。
解説(Remarks)
デバイスは D3D10CreateDevice を使用して作成します。
メソッド 95
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
頂点シェーダーパイプラインステージで使用する定数バッファーを設定します。
| StartSlot | DWORD | in | 定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 設定するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | inoptional | デバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
シェーダーリソースの配列をピクセルシェーダーステージにバインドします。(ID3D10Device.PSSetShaderResources)
| StartSlot | DWORD | in | シェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | 設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | inoptional | デバイスに設定する シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。
シェーダーリソースビューの作成については、ID3D10Device::CreateShaderResourceView を参照してください。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
ピクセルシェーダーをデバイスに設定します。(ID3D10Device.PSSetShader)
| pPixelShader | ID3D10PixelShader* | inoptional | ピクセルシェーダー(ID3D10PixelShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
サンプラーステートの配列をピクセルシェーダーパイプラインステージに設定します。(ID3D10Device.PSSetSamplers)
| StartSlot | DWORD | in | サンプラーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | 配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | 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 |
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
頂点シェーダーをデバイスに設定します。(ID3D10Device.VSSetShader)
| pVertexShader | ID3D10VertexShader* | inoptional | 頂点シェーダー(ID3D10VertexShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
インデックス付きで非インスタンス化のプリミティブを描画します。(ID3D10Device.DrawIndexed)
| IndexCount | DWORD | in | 描画するインデックスの数。 |
| StartIndexLocation | DWORD | in | 頂点バッファーへのアクセス時に使用する最初のインデックスの位置。StartIndexLocation から始めて、頂点バッファー内の頂点をインデックス参照します。 |
| BaseVertexLocation | INT | in | 頂点バッファーの先頭から最初の頂点までのオフセット。 |
解説(Remarks)
draw API はレンダリングパイプラインに作業を送信します。
2 つのインデックスの合計が負の場合、この関数呼び出しの結果は未定義です。
インデックスなしで非インスタンス化のプリミティブを描画します。(ID3D10Device.Draw)
| VertexCount | DWORD | in | 描画する頂点の数。 |
| StartVertexLocation | DWORD | in | 最初の頂点のインデックス。通常は頂点バッファー内のオフセットです。SV_TargetId システム値セマンティクス でマークされたシェーダーパラメーターに対して生成される最初の頂点 ID として使用することもできます。 |
解説(Remarks)
draw API はレンダリングパイプラインに作業を送信します。
描画呼び出しの頂点データは、通常、パイプラインにバインドされた頂点バッファーから取得されます。ただし、SV_VertexId システム値セマンティクス でマークされた頂点データを持つシェーダーから頂点データを提供することもできます。
ピクセルシェーダーパイプラインステージで使用する定数バッファーを設定します。
| StartSlot | DWORD | in | 定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 設定するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | inoptional | デバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
入力レイアウトオブジェクトを入力アセンブラーステージにバインドします。(ID3D10Device.IASetInputLayout)
| pInputLayout | ID3D10InputLayout* | inoptional | 入力レイアウトオブジェクト(ID3D10InputLayout を参照)へのポインター。これは IA ステージによって読み取られる入力バッファーを記述します。 |
解説(Remarks)
入力レイアウトオブジェクトは、頂点バッファーのデータが IA パイプラインステージにどのようにストリーミングされるかを記述します。入力レイアウトオブジェクトを作成するには、ID3D10Device::CreateInputLayout を呼び出します。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
頂点バッファーの配列を入力アセンブラーステージにバインドします。(ID3D10Device.IASetVertexBuffers)
| StartSlot | DWORD | in | バインドの対象となる最初の 入力スロット。最初の頂点バッファーは明示的に開始スロットにバインドされ、これにより配列内の以降の各頂点バッファーは後続の入力スロットに暗黙的にバインドされます。最大 16 個または 32 個の入力スロット(範囲は 0 から D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1 または D3D10_1_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1 まで)を使用できます。使用できる入力スロットの最大数は機能レベルによって異なります。 |
| NumBuffers | DWORD | in | 配列内の頂点バッファーの数。バッファーの数(開始スロットを加えた値)は、IA ステージの入力スロットの総数を超えることはできません。 |
| ppVertexBuffers | ID3D10Buffer** | inoptional | 頂点バッファー(ID3D10Buffer を参照)の配列へのポインター。頂点バッファーは D3D10_BIND_VERTEX_BUFFER フラグを付けて作成されている必要があります。 |
| pStrides | DWORD* | inoptional | ストライド値の配列へのポインター。頂点バッファー配列内の各バッファーに対して 1 つのストライド値を指定します。各ストライドは、その頂点バッファーから使用する要素のサイズ(バイト単位)です。 |
| pOffsets | DWORD* | inoptional | オフセット値の配列へのポインター。頂点バッファー配列内の各バッファーに対して 1 つのオフセット値を指定します。各オフセットは、頂点バッファーの最初の要素から、使用する最初の要素までのバイト数です。 |
解説(Remarks)
頂点バッファーの作成については、頂点バッファーの作成 を参照してください。
現在書き込み用にバインドされている(つまり stream output パイプラインステージにバインドされている)バッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力の両方に同時にバインドできないため、実際には代わりに NULL がバインドされます。
デバッグレイヤー は、リソースが入力と出力として同時にバインドされるのを防いだ場合に必ず警告を生成しますが、これによってランタイムが無効なデータを使用することが防止されるわけではありません。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
インデックスバッファーを入力アセンブラーステージにバインドします。(ID3D10Device.IASetIndexBuffer)
| pIndexBuffer | ID3D10Buffer* | inoptional | インデックスを格納するバッファー(ID3D10Buffer を参照)へのポインター。インデックスバッファーは D3D10_BIND_INDEX_BUFFER フラグを付けて作成されている必要があります。 |
| Format | DXGI_FORMAT | in | インデックスバッファー内のデータのフォーマットを指定します。インデックスバッファーのデータに使用できるフォーマットは、16 ビット整数(DXGI_FORMAT_R16_UINT)と 32 ビット整数(DXGI_FORMAT_R32_UINT)のみです。 |
| Offset | DWORD | in | インデックスバッファーの先頭から、使用する最初のインデックスまでのオフセット(バイト単位)。 |
解説(Remarks)
インデックスバッファーの作成については、インデックスバッファーの作成 を参照してください。
現在書き込み用にバインドされている(つまり stream output パイプラインステージにバインドされている)バッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力の両方に同時にバインドできないため、実際には代わりに NULL がバインドされます。
デバッグレイヤー は、リソースが入力と出力として同時にバインドされるのを防いだ場合に必ず警告を生成しますが、これによってランタイムが無効なデータを使用することが防止されるわけではありません。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
インデックス付きでインスタンス化されたプリミティブを描画します。(ID3D10Device.DrawIndexedInstanced)
| IndexCountPerInstance | DWORD | in | 各インスタンスで使用するインデックスバッファーのサイズ。 |
| InstanceCount | DWORD | in | 描画するインスタンスの数。 |
| StartIndexLocation | DWORD | in | 最初のインデックスのインデックス。 |
| BaseVertexLocation | INT | in | 最初の頂点のインデックス。このインデックスは符号付きであるため、負のインデックスを指定できます。負のインデックスとインデックスバッファーからのインデックス値の合計が 0 未満になる場合、結果は未定義です。 |
| StartInstanceLocation | DWORD | in | 最初のインスタンスのインデックス。 |
解説(Remarks)
draw API はレンダリングパイプラインに作業を送信します。
インスタンス化により、同じジオメトリを再利用してシーン内の複数のオブジェクトを描画することで、パフォーマンスを向上できる場合があります。インスタンス化の一例として、同じオブジェクトを異なる位置と色で描画することが挙げられます。インデックス処理には複数の頂点バッファーが必要です。少なくとも 1 つは頂点単位のデータ用、もう 1 つはインスタンス単位のデータ用です。インスタンス化の例については、Instancing10 サンプル を参照してください。
インデックスなしでインスタンス化されたプリミティブを描画します。(ID3D10Device.DrawInstanced)
| VertexCountPerInstance | DWORD | in | 描画する頂点の数。 |
| InstanceCount | DWORD | in | 描画するインスタンスの数。 |
| StartVertexLocation | DWORD | in | 最初の頂点のインデックス。 |
| StartInstanceLocation | DWORD | in | 最初のインスタンスのインデックス。 |
解説(Remarks)
draw API はレンダリングパイプラインに作業を送信します。
インスタンス化により、同じジオメトリを再利用してシーン内の複数のオブジェクトを描画することで、パフォーマンスを向上できる場合があります。インスタンス化の一例として、同じオブジェクトを異なる位置と色で描画することが挙げられます。インスタンス化の例については、Instancing10 サンプル を参照してください。
インスタンス化された描画呼び出しの頂点データは、通常、パイプラインにバインドされた頂点バッファーから取得されます。ただし、システム値セマンティクス(SV_InstanceID)で識別されるインスタンスデータを持つシェーダーから頂点データを提供することもできます。
ジオメトリシェーダーパイプラインステージで使用する定数バッファーを設定します。
| StartSlot | DWORD | in | 定数バッファーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 設定するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | inoptional | デバイスに渡す定数バッファー(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
ジオメトリシェーダーをデバイスに設定します。(ID3D10Device.GSSetShader)
| pShader | ID3D10GeometryShader* | inoptional | ジオメトリシェーダー(ID3D10GeometryShader を参照)へのポインター。NULL を渡すと、このパイプラインステージのシェーダーが無効になります。 |
解説(Remarks)
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
入力アセンブラーステージの入力データを記述する、プリミティブの種類とデータの順序に関する情報をバインドします。(ID3D10Device.IASetPrimitiveTopology)
| Topology | D3D_PRIMITIVE_TOPOLOGY | in | プリミティブの種類とプリミティブデータの順序(D3D10_PRIMITIVE_TOPOLOGY を参照)。 |
シェーダーリソースの配列を頂点シェーダーステージにバインドします。
| StartSlot | DWORD | in | シェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | 設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | inoptional | デバイスに設定する シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。
シェーダーリソースビューの作成については、ID3D10Device::CreateShaderResourceView を参照してください。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
サンプラーステートの配列を頂点シェーダーパイプラインステージに設定します。(ID3D10Device.VSSetSamplers)
| StartSlot | DWORD | in | サンプラーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | 配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | 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;
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
レンダリングプレディケートを設定します。(ID3D10Device.SetPredication)
| pPredicate | ID3D10Predicate* | inoptional | プレディケート(ID3D10Predicate を参照)へのポインター。NULL 値は「プレディケーションなし」を示します。この場合、PredicateValue の値は無関係ですが、ID3D10Device::GetPredication のために保持されます。 |
| PredicateValue | BOOL | in | TRUE の場合、プレディケートの条件が満たされたときにレンダリングが影響を受けます。FALSE の場合、条件が満たされないときにレンダリングが影響を受けます。 |
解説(Remarks)
プレディケーションに使用するには、プレディケートが「issued」または「signaled」状態でなければなりません。プレディケートがプレディケーション用に設定されている間、ID3D10Asynchronous::Begin および ID3D10Asynchronous::End の呼び出しは無効です。
このメソッドは、プレディケートの結果として得られる Predicate データが PredicateValue と等しい場合に、後続のレンダリングおよびリソース操作コマンドを実際には実行しないことを示すために使用します。ただし、一部のプレディケートはヒントにすぎないため、実際には操作の実行を妨げないことがあります。
プレディケーションの主な利点は、ID3D10Asynchronous::GetData の戻りをスピンして待機するというパフォーマンス上のコストを負うことなく、アプリケーションがグラフィックスコマンドを発行できるようにすることです。したがって、ID3D10Asynchronous::GetData が S_FALSE を返している間もプレディケーションを行えます。別の見方をすると、ID3D10Asynchronous::GetData が S_FALSE を返す可能性がある場合に、アプリケーションはプレディケーションをフォールバックとして使用することもできます。ID3D10Asynchronous::GetData が S_OK を返す場合、アプリケーションは独自のアプリケーションロジックを用いてグラフィックスコマンドの手動呼び出しをスキップできます。
シェーダーリソースの配列をジオメトリシェーダーステージにバインドします。(ID3D10Device.GSSetShaderResources)
| StartSlot | DWORD | in | シェーダーリソースの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | 設定するシェーダーリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | inoptional | デバイスに設定する シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
サブリソースを入力と出力の両方としてバインドすると、この API は対象のシェーダーリソーススロットを NULL で埋めます。デバッグレイヤーが有効な場合は、これに該当するときに警告を通知します。
シェーダーリソースビューの作成については、ID3D10Device::CreateShaderResourceView を参照してください。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
サンプラーステートの配列をジオメトリシェーダーパイプラインステージに設定します。(ID3D10Device.GSSetSamplers)
| StartSlot | DWORD | in | サンプラーの設定を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | 配列内のサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | 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;
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
1 つ以上のレンダーターゲットと深度ステンシルバッファーを出力マージャーステージにバインドします。
| NumViews | DWORD | in | バインドするレンダーターゲットの数。 |
| ppRenderTargetViews | ID3D10RenderTargetView** | inoptional | デバイスにバインドするレンダーターゲット(ID3D10RenderTargetView を参照)の配列へのポインター。このパラメーターが NULL の場合、レンダーターゲットはバインドされません。「解説」を参照してください。 |
| pDepthStencilView | ID3D10DepthStencilView* | inoptional | デバイスにバインドする深度ステンシルビュー(ID3D10DepthStencilView を参照)へのポインター。このパラメーターが NULL の場合、深度ステンシルステートはバインドされません。 |
解説(Remarks)
OMSetRenderTargets を呼び出すと、ppRenderTargetViews 内のレンダーターゲットの数に関係なく、バインドされているすべてのレンダーターゲットと深度ステンシルターゲットが上書きされます。
デバイスが任意の時点でアクティブにできるレンダーターゲットの最大数は、D3D10.h 内の D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT という #define で設定されます。同じ サブリソース を複数のレンダーターゲットスロットに設定しようとすることは無効です。
いずれかのサブリソースが現在(おそらく パイプライン の別の部分で)読み取りまたは書き込み用にもバインドされている場合、それらのバインドポイントは NULL に設定され、単一のレンダリング操作内で同じサブリソースが同時に読み書きされるのを防ぎます。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
リソースのバインドの詳細については、リソースとパイプラインステージのバインド を参照してください。
ピクセルシェーダーは、少なくとも 8 個の個別のレンダーターゲットに同時にレンダリングできる必要があります。これらのレンダーターゲットはすべて、同じ種類のリソースにアクセスする必要があります。すなわち、Buffer、Texture1D、Texture1DArray、Texture2D、Texture2DArray、Texture3D、または TextureCube のいずれかです。すべてのレンダーターゲットは、すべての次元で同じサイズ(幅と高さ、および 3D の場合は深度、*Array 型の場合は配列サイズ)を持つ必要があります。レンダーターゲットがマルチサンプルアンチエイリアシングを使用する場合、バインドされているすべてのレンダーターゲットと深度バッファーは、同じ形式のマルチサンプルリソース(つまり、サンプル数が同じ)でなければなりません。各レンダーターゲットは異なるデータフォーマットを持つことができます。これらのレンダーターゲットのフォーマットは、要素あたりのビット数が同一である必要はありません。
レンダーターゲット用の 8 つのスロットは、任意の組み合わせでレンダーターゲットを設定することも、設定しないこともできます。
同じリソースビューを複数のレンダーターゲットスロットに同時にバインドすることはできません。ただし、単一リソースの重複しない複数のリソースビューを、同時に複数のレンダーターゲットとして設定することはできます。
出力マージャーステージのブレンドステートを設定します。(ID3D10Device.OMSetBlendState)
| pBlendState | ID3D10BlendState* | inoptional | ブレンドステートインターフェイス(ID3D10BlendState を参照)へのポインター。NULL を渡すと、既定のブレンドステートを意味します。詳細は解説を参照してください。 |
| BlendFactor | FLOAT* | 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 } に等しいブレンド係数を使用または保存します。 |
| SampleMask | DWORD | in | 32 ビットのサンプルカバレッジ。既定値は 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] |
サンプルマスクは、アクティブなすべてのレンダーターゲットのうち、どのサンプルが更新されるかを決定します。サンプルマスク内のビットを、マルチサンプルレンダーターゲット内のサンプルに割り当てる方法は、個々のアプリケーションの責任です。サンプルマスクは常に適用されます。これはマルチサンプリングが有効かどうかとは無関係であり、アプリケーションがマルチサンプルレンダーターゲットを使用するかどうかにも依存しません。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
出力マージャーステージの深度ステンシルステートを設定します。(ID3D10Device.OMSetDepthStencilState)
| pDepthStencilState | ID3D10DepthStencilState* | inoptional | デバイスにバインドする深度ステンシルステートインターフェイス(ID3D10DepthStencilState を参照)へのポインター。 |
| StencilRef | DWORD | in | 深度ステンシルテストの実行時に比較対象とする参照値。解説を参照してください。 |
解説(Remarks)
深度ステンシルステートインターフェイスを作成するには、ID3D10Device::CreateDepthStencilState を呼び出します。
深度ステンシルステートは、出力マージャー ステージが深度ステンシルテストをセットアップするために使用します。ステンシル参照値は、深度ステンシルテストで使用される制御値です。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
StreamOutput ステージのターゲット出力バッファーを設定します。これにより、パイプラインによるデータのストリーム出力の有効/無効が切り替わります。
| NumBuffers | DWORD | in | デバイスにバインドするバッファーの数。出力バッファーは最大 4 個まで設定できます。呼び出しで 4 個未満しか指定されない場合、残りのバッファースロットには NULL が設定されます。解説を参照してください。 |
| ppSOTargets | ID3D10Buffer** | inoptional | デバイスにバインドする出力バッファー(ID3D10Buffer を参照)の配列。バッファーは D3D10_BIND_STREAM_OUTPUT フラグを付けて作成されている必要があります。 |
| pOffsets | DWORD* | inoptional | ppSOTargets の各出力バッファーへのオフセットの配列。バッファーごとに 1 つのオフセットを指定します。オフセット値はバイト単位で指定する必要があります。 |
解説(Remarks)
データをストリーム出力するには、(描画呼び出しの前に)ID3D10Device::SOSetTargets を呼び出します。データのストリーム出力を停止するには、NULL を指定して SOSetTargets を呼び出します。例については、GDC 2007 ワークショップの Exercise 01 を参照してください。この例では、RenderInstanceToStream 関数で描画メソッドを呼び出す前に、ストリーム出力のレンダーターゲットを設定しています。
オフセットに -1 を指定すると、ストリーム出力バッファーは追記され、直前のストリーム出力パスでバッファーに最後に書き込まれた位置から続けて書き込まれます。
現在書き込み用にバインドされているバッファーを使用してこのメソッドを呼び出すと、バッファーは入力と出力の両方に同時にバインドできないため、実際には代わりに NULL がバインドされます。
デバッグレイヤー は、リソースが入力と出力として同時にバインドされるのを防いだ場合に必ず警告を生成しますが、これによってランタイムが無効なデータを使用することが防止されるわけではありません。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
ジオメトリシェーダーステージで作成された、サイズが不明なジオメトリを描画します。解説を参照してください。
解説(Remarks)
draw API はレンダリングパイプラインに作業を送信します。
データが SO ステージ のバッファーにストリーム出力された後、それらのバッファーを再び入力アセンブラーステージの入力スロット 0 にバインドすると、DrawAuto は、バッファーに書き込まれたデータ量をアプリケーションが把握していなくてもそれらを描画します。SO ステージのバッファーに書き込まれたデータ量は、データがストリーム出力される際に内部で計測されます。つまり、CPU はストリーム出力されたデータを入力データとして再バインドする前に、その計測値を取得する必要がありません。この量は内部で追跡されますが、SO ステージのバッファー内のデータのフォーマットを記述する入力レイアウトを使用し、バッファーを再び入力アセンブラーにバインドしたときにレイアウトが利用できるようにするのは、依然としてアプリケーションの責任です。
次の図は DrawAuto の処理を示しています。
DrawAuto を呼び出しても、入力として再びバインドされたストリーム出力バッファーの状態は変化しません。
DrawAuto は、1 つの入力バッファーが IA ステージのスロット 0 に入力としてバインドされている場合にのみ動作します。アプリケーションは、SO バッファーリソースを D3D10_BIND_VERTEX_BUFFER と D3D10_BIND_STREAM_OUTPUT の両方のバインドフラグを付けて作成する必要があります。
この API はインデックス処理やインスタンス化をサポートしません。
ストリーム出力バッファーのサイズを取得する必要がある場合、アプリケーションは D3D10_QUERY_SO_STATISTICS を使用してストリーム出力に関する統計をクエリできます。
DrawAuto の使用例は、ParticlesGS サンプル および PipesGS サンプル にあります。
パイプラインのラスタライザーステージのラスタライザーステートを設定します。(ID3D10Device.RSSetState)
| pRasterizerState | ID3D10RasterizerState* | inoptional | パイプラインにバインドするラスタライザーステートインターフェイス(ID3D10RasterizerState を参照)へのポインター。 |
解説(Remarks)
ラスタライザーステートインターフェイスを作成するには、ID3D10Device::CreateRasterizerState を呼び出します。ラスタライザーステートの設定方法の詳細については、ラスタライザーステートの設定 を参照してください。
このメソッドは、渡されたインターフェイスへの参照を保持しません。そのため、アプリケーションはデバイスが現在使用中のインターフェイスを解放しないよう注意する必要があります。
ビューポートの配列をパイプラインのラスタライザーステージにバインドします。(ID3D10Device.RSSetViewports)
| NumViewports | DWORD | in | バインドするビューポートの数。 |
| pViewports | D3D10_VIEWPORT* | inoptional | デバイスにバインドするビューポート(D3D10_VIEWPORT を参照)の配列。各ビューポートは、その範囲が許容範囲(D3D10_VIEWPORT_BOUNDS_MIN、D3D10_VIEWPORT_BOUNDS_MAX、D3D10_MIN_DEPTH、D3D10_MAX_DEPTH)内になければなりません。 |
解説(Remarks)
すべてのビューポートは、1 つの操作としてアトミックに設定する必要があります。呼び出しで指定されていないビューポートは無効になります。
どのビューポートを使用するかは、ジオメトリシェーダーが出力する SV_ViewportArrayIndex セマンティクスによって決定されます(シェーダーセマンティクスの構文 を参照)。ジオメトリシェーダーが SV_ViewportArrayIndex セマンティクスを使用しない場合、Direct3D は配列内の最初のビューポートを使用します。
シザー矩形の配列をラスタライザーステージにバインドします。(ID3D10Device.RSSetScissorRects)
| NumRects | DWORD | in | バインドするシザー矩形の数。 |
| pRects | RECT* | inoptional | シザー矩形(D3D10_RECT を参照)の配列。 |
解説(Remarks)
シザー矩形は、ラスタライザーステートで ScissorEnable が true に設定されている場合にのみ使用されます(D3D10_RASTERIZER_DESC を参照)。
どのシザー矩形を使用するかは、ジオメトリシェーダーが出力する SV_ViewportArrayIndex セマンティクスによって決定されます(シェーダーセマンティクスの構文 を参照)。ジオメトリシェーダーが SV_ViewportArrayIndex セマンティクスを使用しない場合、Direct3D は配列内の最初のシザー矩形を使用します。
配列内の各シザー矩形は、ビューポートの配列内のビューポートに対応します(ID3D10Device::RSSetViewports を参照)。
ソースリソースの領域をコピー先リソースにコピーします。(ID3D10Device.CopySubresourceRegion)
| pDstResource | ID3D10Resource* | in | コピー先リソース(ID3D10Resource を参照)へのポインター。 |
| DstSubresource | DWORD | in | コピー先の サブリソース インデックス。 |
| DstX | DWORD | in | コピー先領域の左上隅の x 座標。 |
| DstY | DWORD | in | コピー先領域の左上隅の y 座標。 |
| DstZ | DWORD | in | コピー先領域の左上隅の z 座標。1D または 2D のサブリソースの場合、これは 0 でなければなりません。 |
| pSrcResource | ID3D10Resource* | in | ソースリソース(ID3D10Resource を参照)へのポインター。 |
| SrcSubresource | DWORD | in | ソースの サブリソース インデックス。 |
| pSrcBox | D3D10_BOX* | inoptional | コピー可能なソースサブリソースを定義する 3D ボックス(D3D10_BOX を参照)。NULL の場合、ソースサブリソース全体がコピーされます。ボックスはソースリソース内に収まっている必要があります。 空のボックスを指定すると何も行われません(no-op)。top の値が bottom 以上、left の値が right 以上、または front の値が back 以上の場合、ボックスは空です。ボックスが空の場合、CopySubresourceRegion はコピー操作を実行しません。 |
解説(Remarks)
ソースボックスは、ソースリソースのサイズ内に収まっている必要があります。コピー先の位置は絶対値です(相対値ではありません)。コピー先の位置はソースの位置からオフセットできますが、コピーする領域のサイズ(コピー先の位置を含む)はコピー先リソースに収まる必要があります。
リソースがバッファーの場合、すべての座標はバイト単位です。リソースがテクスチャの場合、すべての座標はテクセル単位です。
D3D10CalcSubresource は、サブリソースのインデックスを計算するためのヘルパー関数です。
CopySubresourceRegion は GPU 上でコピーを実行します(CPU による memcpy に似ています)。その結果、ソースとコピー先のリソースは次の条件を満たす必要があります。
- 異なるサブリソースであること(ただし同じリソースに属していても構いません)。
- 同じ 種類 であること。
- 互換性のある フォーマット であること(フォーマットは同一であるか、同じ型グループに属している必要があります)。たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャは DXGI_FORMAT_R32G32B32_UINT テクスチャにコピーできます。これは、これらのフォーマットがどちらも DXGI_FORMAT_R32G32B32_TYPELESS グループに属しているためです。Direct3D 10.1 以降では、CopySubresourceRegion はいくつかのフォーマット型間でコピーできます。詳細については、Direct3D 10.1 を使用したフォーマット変換 を参照してください。
- 現在 マップ されていないこと。
アプリケーションでリソース全体をコピーする必要がある場合は、代わりに ID3D10Device::CopyResource を使用することをお勧めします。
CopySubresourceRegion は非同期呼び出しであり、ランタイムがコマンドバッファーキューに追加できます。この非同期動作は、データのコピー時に発生する可能性のあるパイプラインストールを取り除こうとします。詳細については、パフォーマンスに関する考慮事項 を参照してください。
|
Direct3D 10 と Direct3D 10.1 の違い:
Direct3D 10 には次の制限があります。
|
例
次のコードスニペットは、ソーステクスチャ内のボックス(位置 (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 に設定される点に注意してください。
GPU を使用して、ソースリソースの内容全体をコピー先リソースにコピーします。(ID3D10Device.CopyResource)
| pDstResource | ID3D10Resource* | in | コピー先リソース(ID3D10Resource を参照)へのポインター。 |
| pSrcResource | ID3D10Resource* | in | ソースリソース(ID3D10Resource を参照)へのポインター。 |
解説(Remarks)
このメソッドは、GPU にコピー操作を実行させる点で特殊です(CPU による memcpy に似ています)。そのため、パフォーマンス向上のためのいくつかの制限があります。たとえば、ソースとコピー先のリソースは次のとおりでなければなりません。
- 異なるリソースであること。
- 同じ 種類 であること。
- 同一の寸法(該当する場合は幅、高さ、深度、サイズを含む)を持つこと。
- 互換性のある フォーマット であること。つまり、フォーマットが同一であるか、少なくとも同じ型グループに属している必要があります。たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャは DXGI_FORMAT_R32G32B32_UINT テクスチャにコピーできます。これは、これらのフォーマットがどちらも DXGI_FORMAT_R32G32B32_TYPELESS グループに属しているためです。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 を使用したフォーマット変換 を参照してください。 |
CPU が、マップできないメモリ内に作成されたサブリソースへ、メモリからデータをコピーします。解説を参照してください。
| pDstResource | ID3D10Resource* | in | コピー先リソース(ID3D10Resource Interface を参照)へのポインター。 |
| DstSubresource | DWORD | in | コピー先サブリソースを識別する 0 から始まるインデックス。詳細については D3D10CalcSubresource を参照してください。 |
| pDstBox | D3D10_BOX* | inoptional | リソースデータのコピー先となる、コピー先サブリソースの部分を定義するボックス。座標はバッファーの場合はバイト単位、テクスチャの場合はテクセル単位です。NULL の場合、データはオフセットなしでコピー先サブリソースに書き込まれます。ソースの寸法はコピー先に収まる必要があります(D3D10_BOX を参照)。 空のボックスを指定すると何も行われません(no-op)。top の値が bottom 以上、left の値が right 以上、または front の値が back 以上の場合、ボックスは空です。ボックスが空の場合、UpdateSubresource は更新操作を実行しません。 |
| pSrcData | void* | in | メモリ内のソースデータへのポインター。 |
| SrcRowPitch | DWORD | in | ソースデータの 1 行のサイズ。 |
| SrcDepthPitch | DWORD | in | ソースデータの 1 深度スライスのサイズ。 |
解説(Remarks)
シェーダー定数バッファーの場合は、pDstBox に NULL を設定します。このメソッドを使用してシェーダー定数バッファーを部分的に更新することはできません。
次の場合、リソースをコピー先として使用することはできません。
- リソースが イミュータブル または ダイナミック の用途で作成されている場合。
- リソースが 深度ステンシルリソース として作成されている場合。
- リソースがマルチサンプリング機能を使用して作成されている場合(DXGI_SAMPLE_DESC を参照)。
UpdateSubresource のパフォーマンスは、コピー先リソースに対する競合があるかどうかによって異なります。たとえば、アプリケーションが Draw 呼び出しを実行し、その Draw 呼び出しが実際に GPU によって実行される前に同じ頂点バッファーに対して UpdateSubresource を呼び出すと、頂点バッファーリソースに対する競合が発生します。
- リソースに対する競合がある場合、UpdateSubresource はソースデータのコピーを 2 回実行します。まず、CPU がデータをコマンドバッファーからアクセス可能な一時的な記憶領域にコピーします。このコピーはメソッドが戻る前に行われます。次に、GPU が 2 回目のコピーを実行し、ソースデータをマップできないメモリにコピーします。この 2 回目のコピーは、コマンドバッファーがフラッシュされたときに GPU によって実行されるため、非同期に行われます。
- リソースの競合がない場合、UpdateSubresource の動作は、(CPU の観点から)どちらが高速かに依存します。すなわち、データをコマンドバッファーにコピーしてコマンドバッファーがフラッシュされたときに 2 回目のコピーを実行する方法か、CPU がデータを最終的なリソースの位置に直接コピーする方法のいずれかです。これは基盤となるシステムのアーキテクチャに依存します。
この図の各ブロックはデータの 1 要素を表し、各要素のサイズはリソースのフォーマットに依存します。たとえば、リソースのフォーマットが DXGI_FORMAT_R32G32B32A32_FLOAT の場合、各要素のサイズは 128 ビット、つまり 16 バイトになります。この 3D ボリュームテクスチャは、幅が 2、高さが 3、深度が 4 です。
特定のリソースのソースの行ピッチとソースの深度ピッチを計算するには、次の式を使用します。
- ソースの行ピッチ = [1 要素のサイズ(バイト)] * [1 行あたりの要素数]
- ソースの深度ピッチ = [ソースの行ピッチ] * [行数(高さ)]
- ソースの行ピッチ = 16 * 2 = 32
- ソースの深度ピッチ = 16 * 2 * 3 = 96
たとえば、次のコードスニペットは、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 では、深度ステンシルリソースをソースまたはコピー先として使用できます。 |
レンダーターゲット内のすべての要素を 1 つの値に設定します。(ID3D10Device.ClearRenderTargetView)
| pRenderTargetView | ID3D10RenderTargetView* | in | レンダーターゲットへのポインター。 |
| ColorRGBA | FLOAT* | in | レンダーターゲットを塗りつぶす色を表す 4 コンポーネントの配列。 |
解説(Remarks)
レンダーターゲットを特定の整数値のビットパターンにクリアしたいアプリケーションは、このメソッドを使用する代わりに、画面に整列した四角形(quad)をレンダリングする必要があります。この理由は、このメソッドが入力として浮動小数点値を受け取り、それが元の整数と同じビットパターンを持つとは限らないためです。
|
Direct3D 9 と Direct3D 10 の違い:
Direct3D 9 とは異なり、常にリソースビューの全範囲がクリアされます。ビューポートやシザーの設定は適用されません。 |
10Level9 を使用する場合、ClearRenderTargetView はレンダーターゲットビュー内の最初の配列スライスのみをクリアします。これは(たとえば)キューブマップのレンダリングのシナリオに影響する可能性があります。アプリケーションは、各面または配列スライスごとにレンダーターゲットビューを作成し、各ビューを個別にクリアする必要があります。
深度ステンシルリソースをクリアします。(ID3D10Device.ClearDepthStencilView)
| pDepthStencilView | ID3D10DepthStencilView* | in | クリアする深度ステンシルへのポインター。 |
| ClearFlags | DWORD | in | バッファーのどの部分をクリアするか。D3D10_CLEAR_FLAG を参照してください。 |
| Depth | FLOAT | in | この値で深度バッファーをクリアします。この値は 0 から 1 の間にクランプされます。 |
| Stencil | BYTE | in | この値でステンシルバッファーをクリアします。 |
解説(Remarks)
|
Direct3D 9 と Direct3D 10 の違い:
Direct3D 9 とは異なり、常にリソースビューの全範囲がクリアされます。ビューポートやシザーの設定は適用されません。 |
指定されたシェーダーリソースのミップマップを生成します。(ID3D10Device.GenerateMips)
| pShaderResourceView | ID3D10ShaderResourceView* | in | ID3D10ShaderResourceView へのポインター。このシェーダーリソースに対してミップマップが生成されます。 |
解説(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)
その他のサポートされていないフォーマットの場合、このメソッドはエラーを出さずに失敗します。
マルチサンプルリソースを非マルチサンプルリソースにコピーします。この API は、あるレンダーパスの結果であるレンダーターゲットを、2 つ目のレンダーパスの入力として再利用する場合に最も役立ちます。
| pDstResource | ID3D10Resource* | in | コピー先リソース。D3D10_USAGE_DEFAULT フラグを付けて作成され、シングルサンプルである必要があります。ID3D10Resource を参照してください。 |
| DstSubresource | DWORD | in | コピー先サブリソースを識別する 0 から始まるインデックス。詳細については D3D10CalcSubresource を参照してください。 |
| pSrcResource | ID3D10Resource* | in | ソースリソース。マルチサンプルである必要があります。 |
| SrcSubresource | DWORD | in | ソースリソースのソースサブリソース。 |
| Format | DXGI_FORMAT | in | マルチサンプルリソースをシングルサンプルリソースにどのように解決するかを示す 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 を指定できます)。 |
頂点シェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D10Device.VSGetConstantBuffers)
| StartSlot | DWORD | in | 定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 取得するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | outoptional | メソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ピクセルシェーダーリソースを取得します。(ID3D10Device.PSGetShaderResources)
| StartSlot | DWORD | in | シェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | デバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | outoptional | デバイスによって返される シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
デバイスに現在設定されているピクセルシェーダーを取得します。(ID3D10Device.PSGetShader)
| ppPixelShader | ID3D10PixelShader** | out | メソッドによって返されるピクセルシェーダー(ID3D10PixelShader を参照)へのポインターのアドレス。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ピクセルシェーダーパイプラインステージからサンプラーステートの配列を取得します。(ID3D10Device.PSGetSamplers)
| StartSlot | DWORD | in | サンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | デバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | outoptional | デバイスによって返されるサンプラーステートインターフェイスポインター(ID3D10SamplerState を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
デバイスに現在設定されている頂点シェーダーを取得します。(ID3D10Device.VSGetShader)
| ppVertexShader | ID3D10VertexShader** | out | メソッドによって返される頂点シェーダー(ID3D10VertexShader を参照)へのポインターのアドレス。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ピクセルシェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D10Device.PSGetConstantBuffers)
| StartSlot | DWORD | in | 定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 取得するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | outoptional | メソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
入力アセンブラーステージにバインドされている入力レイアウトオブジェクトへのポインターを取得します。(ID3D10Device.IAGetInputLayout)
| ppInputLayout | ID3D10InputLayout** | out | 入力レイアウトオブジェクト(ID3D10InputLayout を参照)へのポインター。これは IA ステージによって読み取られる入力バッファーを記述します。 |
解説(Remarks)
入力レイアウトオブジェクトの作成については、入力レイアウトオブジェクトの作成 を参照してください。
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
入力アセンブラーステージにバインドされている頂点バッファーを取得します。(ID3D10Device.IAGetVertexBuffers)
| StartSlot | DWORD | in | 取得する最初の頂点バッファーの 入力スロット。最初の頂点バッファーは明示的に開始スロットにバインドされ、これにより配列内の以降の各頂点バッファーは後続の入力スロットに暗黙的にバインドされます。最大 16 個または 32 個の入力スロット(範囲は 0 から D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1 または D3D10_1_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - 1 まで)を使用できます。使用できる入力スロットの最大数は機能レベルによって異なります。 |
| NumBuffers | DWORD | in | オフセットから取得する頂点バッファーの数。バッファーの数(開始スロットを加えた値)は、IA ステージの入力スロットの総数を超えることはできません。 |
| ppVertexBuffers | ID3D10Buffer** | outoptional | メソッドによって返される頂点バッファー(ID3D10Buffer を参照)の配列へのポインター。 |
| pStrides | DWORD* | outoptional | メソッドによって返されるストライド値の配列へのポインター。頂点バッファー配列内の各バッファーに対して 1 つのストライド値が返されます。各ストライド値は、その頂点バッファーから使用する要素のサイズ(バイト単位)です。 |
| pOffsets | DWORD* | outoptional | メソッドによって返されるオフセット値の配列へのポインター。頂点バッファー配列内の各バッファーに対して 1 つのオフセット値が返されます。各オフセットは、頂点バッファーの最初の要素から、使用する最初の要素までのバイト数です。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
入力アセンブラーステージにバインドされているインデックスバッファーへのポインターを取得します。(ID3D10Device.IAGetIndexBuffer)
| pIndexBuffer | ID3D10Buffer** | outoptional | メソッドによって返されるインデックスバッファー(ID3D10Buffer を参照)へのポインター。 |
| Format | DXGI_FORMAT* | outoptional | インデックスバッファー内のデータのフォーマットを指定します(DXGI_FORMAT を参照)。これらのフォーマットは、バッファー内のデータのサイズと型を示します。インデックスバッファーのデータに使用できるフォーマットは、16 ビット整数(DXGI_FORMAT_R16_UINT)と 32 ビット整数(DXGI_FORMAT_R32_UINT)のみです。 |
| Offset | DWORD* | outoptional | インデックスバッファーの先頭から、使用する最初のインデックスまでのオフセット(バイト単位)。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ジオメトリシェーダーパイプラインステージで使用されている定数バッファーを取得します。(ID3D10Device.GSGetConstantBuffers)
| StartSlot | DWORD | in | 定数バッファーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumBuffers | DWORD | in | 取得するバッファーの数。 |
| ppConstantBuffers | ID3D10Buffer** | outoptional | メソッドによって返される定数バッファーインターフェイスポインター(ID3D10Buffer を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
デバイスに現在設定されているジオメトリシェーダーを取得します。(ID3D10Device.GSGetShader)
| ppGeometryShader | ID3D10GeometryShader** | out | メソッドによって返されるジオメトリシェーダー(ID3D10GeometryShader を参照)へのポインターのアドレス。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
入力アセンブラーステージの入力データを記述する、プリミティブの種類とデータの順序に関する情報を取得します。(ID3D10Device.IAGetPrimitiveTopology)
| pTopology | D3D_PRIMITIVE_TOPOLOGY* | out | プリミティブの種類とプリミティブデータの順序へのポインター(D3D10_PRIMITIVE_TOPOLOGY を参照)。 |
頂点シェーダーリソースを取得します。(ID3D10Device.VSGetShaderResources)
| StartSlot | DWORD | in | シェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | デバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | outoptional | デバイスによって返される シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
頂点シェーダーパイプラインステージからサンプラーステートの配列を取得します。(ID3D10Device.VSGetSamplers)
| StartSlot | DWORD | in | サンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | デバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | outoptional | デバイスによって返されるサンプラーステートインターフェイスポインター(ID3D10SamplerState を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
レンダリングプレディケートの状態を取得します。(ID3D10Device.GetPredication)
| ppPredicate | ID3D10Predicate** | outoptional | プレディケート(ID3D10Predicate を参照)へのポインターのアドレス。ここに格納される値は、デバイス作成時には NULL になります。 |
| pPredicateValue | BOOL* | outoptional | プレディケートの比較値を格納するブール値のアドレス。デバイス作成時には FALSE です。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ジオメトリシェーダーリソースを取得します。(ID3D10Device.GSGetShaderResources)
| StartSlot | DWORD | in | シェーダーリソースの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumViews | DWORD | in | デバイスから取得するリソースの数。シェーダーリソースには最大 128 個のスロットを使用できます。 |
| ppShaderResourceViews | ID3D10ShaderResourceView** | outoptional | デバイスによって返される シェーダーリソースビュー インターフェイスの配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ジオメトリシェーダーパイプラインステージからサンプラーステートの配列を取得します。
| StartSlot | DWORD | in | サンプラーの取得を開始する、デバイスの 0 から始まる配列内のインデックス。 |
| NumSamplers | DWORD | in | デバイスから取得するサンプラーの数。各パイプラインステージには合計 16 個のサンプラースロットがあります。 |
| ppSamplers | ID3D10SamplerState** | outoptional | デバイスによって返されるサンプラーステートポインター(ID3D10SamplerState を参照)の配列。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
出力マージャーステージで使用可能なレンダーターゲットと深度ステンシルバッファーへのポインターを取得します。
| NumViews | DWORD | in | 取得するレンダーターゲットの数。 |
| ppRenderTargetViews | ID3D10RenderTargetView** | outoptional | デバイスのレンダーターゲットで満たされるレンダーターゲットビュー(ID3D10RenderTargetView を参照)の配列へのポインター。レンダーターゲットの取得が不要な場合は、このパラメーターに NULL を指定します。 |
| ppDepthStencilView | ID3D10DepthStencilView** | outoptional | デバイスの深度ステンシル情報で満たされる深度ステンシルビュー(ID3D10DepthStencilView を参照)へのポインター。深度ステンシルビューの取得が不要な場合は、このパラメーターに NULL を指定します。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
出力マージャーステージのブレンドステートを取得します。(ID3D10Device.OMGetBlendState)
| ppBlendState | ID3D10BlendState** | outoptional | ブレンドステートインターフェイス(ID3D10BlendState を参照)へのポインターのアドレス。 |
| BlendFactor | FLOAT* | outoptional | ブレンド係数の配列。RGBA の各コンポーネントに 1 つずつです。 |
| pSampleMask | DWORD* | outoptional | サンプルマスク へのポインター。 |
解説(Remarks)
ブレンドステートを取得すると、返されるインターフェイスの参照カウントが 1 つ増加します。アプリケーションは、不要になった返却ポインターを解放する必要があります。そうしないとメモリリークが発生します。
出力マージャーステージの深度ステンシルステートを取得します。(ID3D10Device.OMGetDepthStencilState)
| ppDepthStencilState | ID3D10DepthStencilState** | outoptional | デバイスからの情報で満たされる深度ステンシルステートインターフェイス(ID3D10DepthStencilState を参照)へのポインターのアドレス。 |
| pStencilRef | DWORD* | outoptional | 深度ステンシル テストで使用されるステンシル参照値へのポインター。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
パイプラインの StreamOutput ステージのターゲット出力バッファーを取得します。
| NumBuffers | DWORD | in | 取得するバッファーの数。出力バッファーは最大 4 個まで取得できます。 |
| ppSOTargets | ID3D10Buffer** | outoptional | デバイスから取得される出力バッファー(ID3D10Buffer を参照)の配列。 |
| pOffsets | DWORD* | outoptional | ppSOTargets の各出力バッファーへのオフセットの配列。バッファーごとに 1 つのオフセットです。オフセット値はバイト単位です。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
パイプラインのラスタライザーステージからラスタライザーステートを取得します。(ID3D10Device.RSGetState)
| ppRasterizerState | ID3D10RasterizerState** | out | デバイスからの情報で満たすラスタライザーステートインターフェイス(ID3D10RasterizerState を参照)へのポインターのアドレス。 |
解説(Remarks)
返されたインターフェイスは、参照カウントが 1 つ増加します。メモリリークを避けるため、アプリケーションは不要になった返却インターフェイスに対して IUnknown::Release を呼び出す必要があります。
ラスタライザーステージにバインドされているビューポートの配列を取得します
| NumViewports | DWORD* | inout | pViewports 内のビューポートの数。pViewports が NULL の場合、現在バインドされているビューポートの数がここに格納されます。 |
| pViewports | D3D10_VIEWPORT* | outoptional | デバイスからの情報で満たされるビューポート(D3D10_VIEWPORT を参照)の配列。NumViewports が現在バインドされているビューポートの実際の数より大きい場合、配列の未使用のメンバーには 0 が格納されます。 |
ラスタライザーステージにバインドされているシザー矩形の配列を取得します。(ID3D10Device.RSGetScissorRects)
| NumRects | DWORD* | inout | 取得するシザー矩形の数。pRects が NULL の場合、現在バインドされているシザー矩形の数がここに格納されます。 |
| pRects | RECT* | outoptional | シザー矩形(D3D10_RECT を参照)の配列。NumRects が現在バインドされているシザー矩形の数より大きい場合、配列の未使用のメンバーには 0 が格納されます。 |
デバイスが削除された理由を取得します。(ID3D10Device.GetDeviceRemovedReason)
戻り値
Type: HRESULT
考えられる戻り値は次のとおりです。
- DXGI_ERROR_DEVICE_HUNG
- DXGI_ERROR_DEVICE_REMOVED
- DXGI_ERROR_DEVICE_RESET
- DXGI_ERROR_DRIVER_INTERNAL_ERROR
- DXGI_ERROR_INVALID_CALL
- S_OK
例外モードフラグを取得します。(ID3D10Device.SetExceptionMode)
| RaiseFlags | DWORD | in | 1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D10_RAISE_FLAG に一覧化されています。既定値の 0 は、フラグがないことを意味します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
エラー条件を継続不可能な例外に格上げするために、例外モードフラグを設定します。
エラーが発生すると、Direct3D デバイスは DEVICEREMOVED 状態になり、適切な例外フラグが設定されている場合は例外が発生します。発生した例外はアプリケーションを終了させるように設計されています。終了する前に、アプリケーションがデータを永続化する最後の機会は、UnhandledExceptionFilter を使用することです(構造化例外処理 を参照)。一般に、UnhandledExceptionFilter は、アプリケーションがクラッシュしているときにデータを(たとえばディスクに)永続化しようとするために利用されます。UnhandledExceptionFilter 中に実行されるコードは、(プロセスが破損している可能性があるため)確実に実行される保証はありません。UnhandledExceptionFilter が再びクラッシュする前に永続化できたデータは、疑わしいものとして扱い、破損していない新しいプロセスで検査して使用可能かどうかを確認する必要があります。
例外モードフラグを取得します。(ID3D10Device.GetExceptionMode)
戻り値
Type: UINT
1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D10_RAISE_FLAG に一覧化されています。既定値の 0 は、フラグがないことを意味します。
解説(Remarks)
例外モードフラグは、エラー条件を継続不可能な例外に格上げするために使用します。
guid に関連付けられているデータをデバイスから取得します。
| guid | GUID* | in | データに関連付けられている Guid。 |
| pDataSize | DWORD* | inout | データのサイズ。 |
| pData | void* | outoptional | デバイスに格納されているデータへのポインター。pData が NULL の場合、DataSize も 0 でなければならず、guid に以前関連付けられていたデータはすべて破棄されます。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
返されるデータが、以前に SetPrivateDataInterface によって設定された IUnknown またはその派生クラスへのポインターである場合、そのインターフェイスは、プライベートデータが返される前に参照カウントが 1 つ増加します。
デバイスにデータを設定し、そのデータを guid に関連付けます。(ID3D10Device.SetPrivateData)
| guid | GUID* | in | データに関連付けられている Guid。 |
| DataSize | DWORD | in | データのサイズ。 |
| pData | void* | inoptional | このデバイスに格納するデータへのポインター。pData が NULL の場合、DataSize も 0 でなければならず、guid に以前関連付けられていたデータはすべて破棄されます。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
このメソッドでデバイスに格納されたデータは、ID3D10DeviceChild::GetPrivateData で取得できます。
このメソッドで設定されるデータと guid は、通常、アプリケーション定義です。
IUnknown から派生したインターフェイスをこのデバイスに関連付け、そのインターフェイスをアプリケーション定義の guid に関連付けます。
| guid | GUID* | in | インターフェイスに関連付ける Guid。 |
| pData | IUnknown* | inoptional | デバイスオブジェクトに関連付ける IUnknown 派生インターフェイスへのポインター。その参照カウントは、設定時に増加し、ID3D10Device が破棄されたとき、または同じ GUID で SetPrivateData もしくは SetPrivateDataInterface を呼び出してデータが上書きされたときに減少します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
すべての既定のデバイス設定を復元し、デバイスを作成時の状態に戻します。
コマンドバッファーにキューされたコマンドを GPU に送信します。
解説(Remarks)
ほとんどのアプリケーションはこのメソッドを呼び出す必要はありません。必要のないときにこのメソッドを呼び出すと、パフォーマンスが低下します。Flush の呼び出しごとに、かなりのオーバーヘッドが発生します。
アプリケーションが Direct3D の状態設定、表示(present)、または描画のコマンドを呼び出すと、それらのコマンドは内部コマンドバッファーにキューされます。Flush は、それらのコマンドを処理のために GPU に送信します。通常、これらのコマンドは、コマンドバッファーがいっぱいになったときやリソースをマップするときなど、Direct3D が必要と判断したときに自動的に GPU に送信されます。Flush は、コマンドを手動で送信します。
Flush は、CPU が任意の時間だけ待機する場合(Sleep、ID3DX10ThreadPump::WaitForAllItems、WaitForVBlank を呼び出すときなど)に使用する必要があります。
フラッシュの仕組みの詳細については、Direct3D API 呼び出しの正確なプロファイリング (Direct3D 9) を参照してください。
バッファー(頂点バッファー、インデックスバッファー、またはシェーダー定数バッファー)を作成します。
| pDesc | D3D10_BUFFER_DESC* | in | バッファーの記述(D3D10_BUFFER_DESC を参照)へのポインター。 |
| pInitialData | D3D10_SUBRESOURCE_DATA* | inoptional | 初期化データ(D3D10_SUBRESOURCE_DATA を参照)へのポインター。領域の割り当てのみを行う場合は NULL を使用します。 |
| ppBuffer | ID3D10Buffer** | outoptional | 作成されたバッファー(ID3D10Buffer Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(S_FALSE は合格を示します)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
サンプルコードについては、次を参照してください。
1D テクスチャの配列を作成します(Texture1D を参照)。
| pDesc | D3D10_TEXTURE1D_DESC* | in | 1D テクスチャの記述(D3D10_TEXTURE1D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。 |
| pInitialData | D3D10_SUBRESOURCE_DATA* | inoptional | サブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。 |
| ppTexture1D | ID3D10Texture1D** | out | 作成されたテクスチャ(ID3D10Texture1D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。
解説(Remarks)
CreateTexture1D は、1D テクスチャの配列を格納する 1D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。
すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。
2D テクスチャの配列を作成します(Texture2D を参照)。
| pDesc | D3D10_TEXTURE2D_DESC* | in | 2D テクスチャの記述(D3D10_TEXTURE2D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。 |
| pInitialData | D3D10_SUBRESOURCE_DATA* | inoptional | サブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順、次にミップレベル順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。 |
| ppTexture2D | ID3D10Texture2D** | out | 作成されたテクスチャ(ID3D10Texture2D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。
解説(Remarks)
CreateTexture2D は、1D テクスチャの配列を格納する 2D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。
すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。
単一の 3D テクスチャを作成します(Texture3D を参照)。
| pDesc | D3D10_TEXTURE3D_DESC* | in | 3D テクスチャの記述(D3D10_TEXTURE3D_DESC を参照)へのポインター。実行時に異なる互換フォーマットとして解釈できるタイプレスリソースを作成するには、テクスチャの記述でタイプレスフォーマットを指定します。ミップマップレベルを自動的に生成するには、ミップマップレベル数を 0 に設定します。 |
| pInitialData | D3D10_SUBRESOURCE_DATA* | inoptional | サブリソース の記述(D3D10_SUBRESOURCE_DATA を参照)の配列へのポインター。サブリソースごとに 1 つ(テクスチャ配列インデックス順、次にスライスインデックス順、次にミップレベル順)です。IMMUTABLE リソース(D3D10_USAGE を参照)を作成する場合、アプリケーションは pInitialData に NULL を指定できません。リソースがマルチサンプルの場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialData は NULL でなければなりません。 |
| ppTexture3D | ID3D10Texture3D** | out | 作成されたテクスチャ(ID3D10Texture3D Interface を参照)へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
メソッドが成功した場合、戻りコードは S_OK です。失敗時のエラーコードについては、Direct3D 10 の戻りコード を参照してください。
解説(Remarks)
CreateTexture3D は、1D テクスチャの配列を格納する 3D テクスチャリソースを作成します。テクスチャの数はテクスチャの記述で指定します。リソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。
すべてのリソースは、1 つ以上の サブリソース で構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D10_SUBRESOURCE_DATA 構造体の一部として最初にデータを指定するか、SDK が提供する テクスチャリング関数 のいずれかを使用します。
リソース内のデータにアクセスするためのシェーダーリソースビューを作成します。(ID3D10Device.CreateShaderResourceView)
| pResource | ID3D10Resource* | in | シェーダーへの入力となる リソース へのポインター。このリソースは D3D10_BIND_SHADER_RESOURCE フラグを付けて作成されている必要があります。 |
| pDesc | D3D10_SHADER_RESOURCE_VIEW_DESC* | inoptional | シェーダーリソースビューの記述(D3D10_SHADER_RESOURCE_VIEW_DESC を参照)へのポインター。リソース全体にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。 |
| ppSRView | ID3D10ShaderResourceView** | outoptional | ID3D10ShaderResourceView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
リソースは 1 つ以上の サブリソース で構成され、ビューはパイプラインにどのサブリソースへのアクセスを許可するかを識別します。さらに、各リソースはビューを使用してパイプラインにバインドされます。シェーダーリソースビューは、任意のバッファーまたはテクスチャリソースを次の API メソッドを使用して シェーダーステージ にバインドするために設計されています。VSSetShaderResources、GSSetShaderResources、PSSetShaderResources です。
ビューは完全に型付けされているため、タイプレスリソースはパイプラインにバインドされると完全に型付けされます。
リソースデータにアクセスするためのレンダーターゲットビューを作成します。
| pResource | ID3D10Resource* | in | レンダーターゲットとして機能する リソース へのポインター。このリソースは D3D10_BIND_RENDER_TARGET フラグを付けて作成されている必要があります。 |
| pDesc | D3D10_RENDER_TARGET_VIEW_DESC* | inoptional | レンダーターゲットビューの記述(D3D10_RENDER_TARGET_VIEW_DESC を参照)へのポインター。リソース全体のミップマップレベル 0 にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。 |
| ppRTView | ID3D10RenderTargetView** | outoptional | ID3D10RenderTargetView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
レンダーターゲットビューは、ID3D10Device::OMSetRenderTargets を呼び出すことで、出力マージャーステージ にバインドできます。
リソースデータにアクセスするための深度ステンシルビューを作成します。(ID3D10Device.CreateDepthStencilView)
| pResource | ID3D10Resource* | in | 深度ステンシルサーフェスとして機能する リソース へのポインター。このリソースは D3D10_BIND_DEPTH_STENCIL フラグを付けて作成されている必要があります。 |
| pDesc | D3D10_DEPTH_STENCIL_VIEW_DESC* | inoptional | 深度ステンシルビューの記述(D3D10_DEPTH_STENCIL_VIEW_DESC を参照)へのポインター。リソース全体のミップマップレベル 0 にアクセスするビュー(リソースの作成時のフォーマットを使用)を作成するには、このパラメーターに NULL を設定します。 |
| ppDepthStencilView | ID3D10DepthStencilView** | outoptional | ID3D10DepthStencilView へのポインターのアドレス。他の入力パラメーターを検証するには、このパラメーターに NULL を設定します(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
深度ステンシルビューは、ID3D10Device::OMSetRenderTargets を呼び出すことで、出力マージャーステージ にバインドできます。
さらに背景情報については、深度ステンシルに関する プログラミングガイドのページ を参照してください。
入力アセンブラーステージの入力バッファーデータを記述する入力レイアウトオブジェクトを作成します。(ID3D10Device.CreateInputLayout)
| pInputElementDescs | D3D10_INPUT_ELEMENT_DESC* | in | 入力アセンブラーステージの入力データ型の配列。各型は要素の記述(D3D10_INPUT_ELEMENT_DESC を参照)で記述されます。 |
| NumElements | DWORD | in | 入力要素の配列内の入力データ型の数。 |
| pShaderBytecodeWithInputSignature | void* | in | コンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。コンパイル済みシェーダーコードには 入力シグネチャ が含まれており、これが要素の配列に対して検証されます。解説を参照してください。 |
| BytecodeLength | UINT_PTR | in | コンパイル済みシェーダーのサイズ。 |
| ppInputLayout | ID3D10InputLayout** | 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 の時点でのドライバーの追加のリンク作業が削減または排除されます。 |
コンパイル済みシェーダーから頂点シェーダーオブジェクトを作成します。(ID3D10Device.CreateVertexShader)
| pShaderBytecode | void* | in | コンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。 |
| BytecodeLength | UINT_PTR | in | コンパイル済み頂点シェーダーのサイズ。 |
| ppVertexShader | ID3D10VertexShader** | outoptional | ID3D10VertexShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
ジオメトリシェーダーを作成します。(ID3D10Device.CreateGeometryShader)
| pShaderBytecode | void* | in | コンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。 |
| BytecodeLength | UINT_PTR | in | コンパイル済みジオメトリシェーダーのサイズ。 |
| ppGeometryShader | ID3D10GeometryShader** | outoptional | ID3D10GeometryShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
作成後、シェーダーは ID3D10Device::GSSetShader を呼び出すことでデバイスに設定できます。
ストリーム出力バッファーに書き込めるジオメトリシェーダーを作成します。(ID3D10Device.CreateGeometryShaderWithStreamOutput)
| pShaderBytecode | void* | in | 標準のジオメトリシェーダーとストリーム出力のための、コンパイル済みジオメトリシェーダーへのポインター。このポインターの取得方法については、コンパイル済みシェーダーへのポインターの取得 を参照してください。 ジオメトリシェーダーを使用せずにストリーム出力を作成するには、前段のステージの出力シグネチャへのポインターを渡します。この出力シグネチャを取得するには、D3DGetOutputSignatureBlob コンパイラ関数を呼び出します。前段のステージで使用されるコンパイル済み 頂点シェーダー へのポインターを渡すこともできます。このコンパイル済みシェーダーは、データの出力シグネチャを提供します。 |
| BytecodeLength | UINT_PTR | in | コンパイル済みジオメトリシェーダーのサイズ。 |
| pSODeclaration | D3D10_SO_DECLARATION_ENTRY* | inoptional | D3D10_SO_DECLARATION_ENTRY 配列へのポインター。NumEntries> 0 の場合、NULL にはできません。 |
| NumEntries | DWORD | in | pSODeclaration が指す配列内のエントリの数。最小 0、最大 64。 |
| OutputStreamStride | DWORD | in | pSODeclaration が指す配列内の各要素のサイズ(バイト単位)。このパラメーターは、pSODeclaration 内のすべてのエントリで出力スロットが 0 の場合にのみ使用されます。 |
| ppGeometryShader | ID3D10GeometryShader** | outoptional | ID3D10GeometryShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。 |
戻り値
Type: HRESULT
このメソッドは、Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
CreateGeometryShaderWithStreamOutput の使用方法の詳細については、ストリーム出力を伴うジオメトリシェーダーオブジェクトの作成 を参照してください。
ピクセルシェーダーを作成します。(ID3D10Device.CreatePixelShader)
| pShaderBytecode | void* | in | コンパイル済みシェーダーへのポインター。このポインターを取得するには、コンパイル済みシェーダーへのポインターの取得 を参照してください。 |
| BytecodeLength | UINT_PTR | in | コンパイル済みピクセルシェーダーのサイズ。 |
| ppPixelShader | ID3D10PixelShader** | outoptional | ID3D10PixelShader Interface へのポインターのアドレス。これが NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格した場合、この API は S_OK ではなく S_FALSE を返します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
ピクセルシェーダーの作成後、ID3D10Device::PSSetShader を使用してデバイスに設定できます。
出力マージャーステージのブレンドステートをカプセル化するブレンドステートオブジェクトを作成します。(ID3D10Device.CreateBlendState)
| pBlendStateDesc | D3D10_BLEND_DESC* | in | ブレンドステートの記述(D3D10_BLEND_DESC を参照)へのポインター。 |
| ppBlendState | ID3D10BlendState** | outoptional | 作成されたブレンドステートオブジェクト(ID3D10BlendState Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
アプリケーションは、最大 4096 個の一意なブレンドステートオブジェクトを作成できます。オブジェクトを作成するたびに、ランタイムは以前のオブジェクトが同じステートを持つかどうかを確認します。そのような以前のオブジェクトが存在する場合、ランタイムは重複するオブジェクトを作成する代わりに、以前のインスタンスへのポインターを返します。
出力マージャーステージの深度ステンシルテスト情報をカプセル化する深度ステンシルステートオブジェクトを作成します。(ID3D10Device.CreateDepthStencilState)
| pDepthStencilDesc | D3D10_DEPTH_STENCIL_DESC* | in | 深度ステンシルステートの記述(D3D10_DEPTH_STENCIL_DESC を参照)へのポインター。 |
| ppDepthStencilState | ID3D10DepthStencilState** | outoptional | 作成された深度ステンシルステートオブジェクト(ID3D10DepthStencilState Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
デバイス上では、一度に 4096 個の一意な深度ステンシルステートオブジェクトを作成できます。
アプリケーションが既存の深度ステンシルステートと同じ記述で深度ステンシルステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意な深度ステンシルステートオブジェクトの総数は変わりません。
ラスタライザーステージの動作を指定するラスタライザーステートオブジェクトを作成します。(ID3D10Device.CreateRasterizerState)
| pRasterizerDesc | D3D10_RASTERIZER_DESC* | in | ラスタライザーステートの記述(D3D10_RASTERIZER_DESC を参照)へのポインター。 |
| ppRasterizerState | ID3D10RasterizerState** | outoptional | 作成されたラスタライザーステートオブジェクト(ID3D10RasterizerState Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
デバイス上では、一度に 4096 個の一意なラスタライザーステートオブジェクトを作成できます。
アプリケーションが既存のラスタライザーステートと同じ記述でラスタライザーステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意なラスタライザーステートオブジェクトの総数は変わりません。
テクスチャのサンプリング情報をカプセル化するサンプラーステートオブジェクトを作成します。(ID3D10Device.CreateSamplerState)
| pSamplerDesc | D3D10_SAMPLER_DESC* | in | サンプラーステートの記述(D3D10_SAMPLER_DESC を参照)へのポインター。 |
| ppSamplerState | ID3D10SamplerState** | outoptional | 作成されたサンプラーステートオブジェクト(ID3D10SamplerState Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
デバイス上では、一度に 4096 個の一意なサンプラーステートオブジェクトを作成できます。
アプリケーションが既存のサンプラーステートと同じ記述でサンプラーステートを作成しようとした場合、参照カウントが増加した同じインターフェイスが返され、一意なサンプラーステートオブジェクトの総数は変わりません。
このインターフェイスは、GPU から情報をクエリするためのメソッドをカプセル化します。(ID3D10Device.CreateQuery)
| pQueryDesc | D3D10_QUERY_DESC* | in | クエリの記述(D3D10_QUERY_DESC を参照)へのポインター。 |
| ppQuery | ID3D10Query** | outoptional | 作成されたクエリオブジェクト(ID3D10Query Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
プレディケートを作成します。(ID3D10Device.CreatePredicate)
| pPredicateDesc | D3D10_QUERY_DESC* | in | クエリの記述へのポインター。クエリの型は D3D10_QUERY_SO_OVERFLOW_PREDICATE または D3D10_QUERY_OCCLUSION_PREDICATE でなければなりません(D3D10_QUERY_DESC を参照)。 |
| ppPredicate | ID3D10Predicate** | outoptional | プレディケート(ID3D10Predicate Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
GPU のパフォーマンスを測定するためのカウンターオブジェクトを作成します。(ID3D10Device.CreateCounter)
| pCounterDesc | D3D10_COUNTER_DESC* | in | カウンターの記述(D3D10_COUNTER_DESC を参照)へのポインター。 |
| ppCounter | ID3D10Counter** | outoptional | カウンター(ID3D10Counter Interface を参照)へのポインターのアドレス。 |
戻り値
Type: HRESULT
この関数が成功した場合、S_OK を返します。失敗した場合、考えられる戻り値は S_FALSE、E_OUTOFMEMORY、DXGI_ERROR_UNSUPPORTED、DXGI_ERROR_NONEXCLUSIVE、E_INVALIDARG です。
DXGI_ERROR_UNSUPPORTED は、アプリケーションが既知の(well-known)カウンターの作成を要求したが、現在のデバイスがそれをサポートしていない場合に返されます。
DXGI_ERROR_NONEXCLUSIVE は、別のデバイスオブジェクトが現在カウンターを使用しているため、現時点ではこのデバイスがそれらを使用できないことを示します。
E_INVALIDARG は、範囲外の既知のカウンターまたはデバイス依存のカウンターが要求された場合、あるいは同時にアクティブなカウンターが使い果たされた場合に返されます。
インストールされているビデオデバイスでの、指定されたフォーマットのサポート状況を取得します。(ID3D10Device.CheckFormatSupport)
| Format | DXGI_FORMAT | in | サポートを確認するフォーマットを記述する DXGI_FORMAT 列挙。 |
| pFormatSupport | DWORD* | out | 指定されたフォーマットがインストールされているデバイスでどのようにサポートされているかを示す D3D10_FORMAT_SUPPORT 列挙値のビットフィールド。これらの値は OR で結合されています。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。それ以外の場合、Format パラメーターが NULL のときは E_INVALIDARG を、記述されたフォーマットが存在しないときは E_FAIL を返します。
解説(Remarks)
ほとんどのフォーマットのサポートは Direct3D の機能レベルに基づいています。サポートの確認が必要なのは、いくつかの特定のユースケースのみです。詳細については、Direct3D 機能レベル 10.0 ハードウェアのフォーマットサポート および Direct3D 機能レベル 10.1 ハードウェアのフォーマットサポート を参照してください。
マルチサンプリング時に使用可能な品質レベルの数を取得します。(ID3D10Device.CheckMultisampleQualityLevels)
| Format | DXGI_FORMAT | in | テクスチャのフォーマット。DXGI_FORMAT を参照してください。 |
| SampleCount | DWORD | in | マルチサンプリング時のサンプル数。 |
| pNumQualityLevels | DWORD* | out | アダプターがサポートする品質レベルの数。解説を参照してください。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
テクスチャをマルチサンプリングする場合、アダプターで使用可能な品質レベルの数は、使用するテクスチャのフォーマットと要求されるサンプル数に依存します。d3d10.h の D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT で定義される最大サンプル数は 32 です。pNumQualityLevels の戻り値が 0 の場合、そのフォーマットとサンプル数の組み合わせは、インストールされているアダプターではサポートされていません。
さらに、品質レベルの定義は各ハードウェアベンダーに委ねられていますが、Direct3D はこの情報の検出に役立つ機能を提供していません。
Direct3D 10.1 デバイスは、R32G32B32A32 および R32G32B32 フォーマットを除くすべてのフォーマットで 4x MSAA をサポートする必要があります。
カウンターの情報を取得します。(ID3D10Device.CheckCounterInfo)
| pCounterInfo | D3D10_COUNTER_INFO* | out | カウンター情報(D3D10_COUNTER_INFO を参照)へのポインター。 |
既存のカウンターの型、名前、測定単位、および説明を取得します。(ID3D10Device.CheckCounter)
| pDesc | D3D10_COUNTER_DESC* | in | カウンターの記述(D3D10_COUNTER_DESC を参照)へのポインター。どのカウンターの情報を取得するかを指定します。 |
| pType | D3D10_COUNTER_TYPE* | out | カウンターのデータ型(D3D10_COUNTER_TYPE を参照)へのポインター。取得するカウンターのデータ型を指定します。 |
| pActiveCounters | DWORD* | out | このカウンター型を作成するために必要なハードウェアカウンターの数へのポインター。同じカウンター型のすべてのインスタンスは、同じハードウェアカウンターを使用します。 |
| szName | LPSTR | outoptional | カウンターの簡単な名前で満たされる文字列。アプリケーションがカウンターの名前を必要としない場合は NULL でも構いません。 |
| pNameLength | DWORD* | inoutoptional | szName に返される文字列の長さ。NULL でも構いません。 |
| szUnits | LPSTR | outoptional | ポインターが指すメモリに文字列を格納するのに十分な領域がある場合の、カウンターが測定する単位の名前。NULL でも構いません。返される文字列は常に英語です。 |
| pUnitsLength | DWORD* | inoutoptional | szUnits に返される文字列の長さ。NULL でも構いません。 |
| szDescription | LPSTR | outoptional | ポインターが指すメモリに文字列を格納するのに十分な領域がある場合の、カウンターの説明。NULL でも構いません。返される文字列は常に英語です。 |
| pDescriptionLength | DWORD* | inoutoptional | szDescription に返される文字列の長さ。NULL でも構いません。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 の戻りコード のいずれかを返します。
解説(Remarks)
長さのパラメーターは NULL にできます。これは、アプリケーションが長さにも対応する文字列の値にも関心がないことを示します。長さのパラメーターが NULL 以外で、対応する文字列が NULL の場合、長さのパラメーターの入力値は無視され、対応する文字列の長さ(終端の NULL を含む)が長さのパラメーターを通じて返されます。長さと対応するパラメーターの両方が NULL 以外の場合、長さの入力値がチェックされて十分な領域があることが確認され、その後、文字列の長さ(終端の NULL 文字を含む)が長さのパラメーターを通じて渡されます。
D3D10CreateDevice でデバイスを作成した呼び出しで使用されたフラグを取得します。
戻り値
Type: UINT
デバイスの作成に使用されたフラグを含むビットフィールド。D3D10_CREATE_DEVICE_FLAG を参照してください。
別の Direct3D デバイスで作成された共有リソースへのアクセスをデバイスに与えます。
| hResource | HANDLE | in | リソースハンドル。解説を参照してください。 |
| ReturnedInterface | GUID* | in | リソースインターフェイスのグローバル一意識別子(GUID)。解説を参照してください。 |
| ppResource | void** | 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 デバイスの間でリソースを共有するには、そのテクスチャが CreateTexture の pSharedHandle 引数を使用して作成されている必要があります。共有された 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 に共有されるテクスチャには、次の制限があります。
- テクスチャは 2D でなければなりません
- ミップレベルは 1 つのみ許可されます
- テクスチャは既定の用途でなければなりません
- テクスチャは書き込み専用でなければなりません
- MSAA テクスチャは許可されません
- バインドフラグには SHADER_RESOURCE と RENDER_TARGET が設定されている必要があります
- R10G10B10A2_UNORM、R16G16B16A16_FLOAT、R8G8B8A8_UNORM の各フォーマットのみが許可されます
このメソッドは実装されていません。(ID3D10Device.SetTextFilterSize)
| Width | DWORD | in | 該当なし |
| Height | DWORD | in | 該当なし |
解説(Remarks)
このメソッドは実装されておらず、使用しないでください。
このメソッドは実装されていません。(ID3D10Device.GetTextFilterSize)
| pWidth | DWORD* | outoptional | 該当なし |
| pHeight | DWORD* | outoptional | 該当なし |
解説(Remarks)
このメソッドは実装されておらず、使用しないでください。
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 指定が可能。#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,sptr,sptr #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,sptr,int #comfunc global ID3D10Device_OMSetDepthStencilState 26 sptr,int #comfunc global ID3D10Device_SOSetTargets 27 int,sptr,sptr #comfunc global ID3D10Device_DrawAuto 28 #comfunc global ID3D10Device_RSSetState 29 sptr #comfunc global ID3D10Device_RSSetViewports 30 int,sptr #comfunc global ID3D10Device_RSSetScissorRects 31 int,sptr #comfunc global ID3D10Device_CopySubresourceRegion 32 sptr,int,int,int,int,sptr,int,sptr #comfunc global ID3D10Device_CopyResource 33 sptr,sptr #comfunc global ID3D10Device_UpdateSubresource 34 sptr,int,sptr,sptr,int,int #comfunc global ID3D10Device_ClearRenderTargetView 35 sptr,sptr #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,sptr,sptr #comfunc global ID3D10Device_IAGetIndexBuffer 47 sptr,sptr,sptr #comfunc global ID3D10Device_GSGetConstantBuffers 48 int,int,sptr #comfunc global ID3D10Device_GSGetShader 49 sptr #comfunc global ID3D10Device_IAGetPrimitiveTopology 50 sptr #comfunc global ID3D10Device_VSGetShaderResources 51 int,int,sptr #comfunc global ID3D10Device_VSGetSamplers 52 int,int,sptr #comfunc global ID3D10Device_GetPredication 53 sptr,sptr #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,sptr,sptr #comfunc global ID3D10Device_OMGetDepthStencilState 58 sptr,sptr #comfunc global ID3D10Device_SOGetTargets 59 int,sptr,sptr #comfunc global ID3D10Device_RSGetState 60 sptr #comfunc global ID3D10Device_RSGetViewports 61 sptr,sptr #comfunc global ID3D10Device_RSGetScissorRects 62 sptr,sptr #comfunc global ID3D10Device_GetDeviceRemovedReason 63 #comfunc global ID3D10Device_SetExceptionMode 64 int #comfunc global ID3D10Device_GetExceptionMode 65 #comfunc global ID3D10Device_GetPrivateData 66 sptr,sptr,sptr #comfunc global ID3D10Device_SetPrivateData 67 sptr,int,sptr #comfunc global ID3D10Device_SetPrivateDataInterface 68 sptr,sptr #comfunc global ID3D10Device_ClearState 69 #comfunc global ID3D10Device_Flush 70 #comfunc global ID3D10Device_CreateBuffer 71 sptr,sptr,sptr #comfunc global ID3D10Device_CreateTexture1D 72 sptr,sptr,sptr #comfunc global ID3D10Device_CreateTexture2D 73 sptr,sptr,sptr #comfunc global ID3D10Device_CreateTexture3D 74 sptr,sptr,sptr #comfunc global ID3D10Device_CreateShaderResourceView 75 sptr,sptr,sptr #comfunc global ID3D10Device_CreateRenderTargetView 76 sptr,sptr,sptr #comfunc global ID3D10Device_CreateDepthStencilView 77 sptr,sptr,sptr #comfunc global ID3D10Device_CreateInputLayout 78 sptr,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,sptr,int,int,sptr #comfunc global ID3D10Device_CreatePixelShader 82 sptr,sptr,sptr #comfunc global ID3D10Device_CreateBlendState 83 sptr,sptr #comfunc global ID3D10Device_CreateDepthStencilState 84 sptr,sptr #comfunc global ID3D10Device_CreateRasterizerState 85 sptr,sptr #comfunc global ID3D10Device_CreateSamplerState 86 sptr,sptr #comfunc global ID3D10Device_CreateQuery 87 sptr,sptr #comfunc global ID3D10Device_CreatePredicate 88 sptr,sptr #comfunc global ID3D10Device_CreateCounter 89 sptr,sptr #comfunc global ID3D10Device_CheckFormatSupport 90 int,sptr #comfunc global ID3D10Device_CheckMultisampleQualityLevels 91 int,int,sptr #comfunc global ID3D10Device_CheckCounterInfo 92 sptr #comfunc global ID3D10Device_CheckCounter 93 sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global ID3D10Device_GetCreationFlags 94 #comfunc global ID3D10Device_OpenSharedResource 95 sptr,sptr,sptr #comfunc global ID3D10Device_SetTextFilterSize 96 int,int #comfunc global ID3D10Device_GetTextFilterSize 97 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。