ID3D10Device::CopySubresourceRegion メソッド (d3d10.h)
ソース リソースからターゲット リソースにリージョンをコピーします。
構文
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
パラメーター
[in] pDstResource
種類: ID3D10Resource*
宛先リソースへのポインター ( 「ID3D10Resource」を参照)。
[in] DstSubresource
型: UINT
変換先のサブリソース インデックス。
[in] DstX
型: UINT
変換先領域の左上隅の x 座標。
[in] DstY
型: UINT
宛先領域の左上隅の y 座標。
[in] DstZ
型: UINT
ターゲット領域の左上隅の z 座標。 1D または 2D サブリソースの場合、これは 0 である必要があります。
[in] pSrcResource
種類: ID3D10Resource*
ソース リソースへのポインター ( 「ID3D10Resource」を参照)。
[in] SrcSubresource
型: UINT
ソースのサブリソース インデックス。
[in] pSrcBox
型: const D3D10_BOX*
コピーできるソース サブリソースを定義する 3D ボックス ( D3D10_BOX参照)。 NULL の場合、ソース サブリソース全体がコピーされます。 ボックスはソース リソース内に収まる必要があります。
空のボックスを使用すると、操作が不要になります。 上の値が下の値以上であるか、左の値が右の値以上であるか、前面の値が戻り値以上の場合、ボックスは空です。 ボックスが空の場合、 CopySubresourceRegion はコピー操作を実行しません。
戻り値
なし
解説
ソース ボックスは、ソース リソースのサイズ内にある必要があります。 変換先の場所は絶対値です (相対値ではありません)。 変換先の場所は、ソースの場所からオフセットできます。ただし、コピーするリージョンのサイズ (コピー先の場所を含む) は、コピー先リソースに収まる必要があります。
リソースがバッファーの場合、すべての座標はバイト単位です。リソースがテクスチャの場合、すべての座標はテクセル内にあります。
D3D10CalcSubresource は、サブリソース インデックスを計算するためのヘルパー関数です。
CopySubresourceRegion は GPU でコピーを実行します (CPU による memcpy に似ています)。 その結果、ソース リソースと移行先リソースは次の条件を満たす必要があります。
- 異なるサブリソースである必要があります (ただし、同じリソースから取得できます)。
- 同じ 型である必要があります。
- 互換性のある 形式 を持つ必要があります (形式は同一であるか、同じ型グループの形式である必要があります)。 たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャは、両方の形式が DXGI_FORMAT_R32G32B32_TYPELESS グループ内にあるため、DXGI_FORMAT_R32G32B32_UINT テクスチャにコピーできます。 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 テクスチャの場合、前面と背面はそれぞれ常に 0 と 1 に設定されます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |
Library | D3D10.lib |