ID3D10Device::CopySubresourceRegion
コピー元リソースからコピー先リソースにリージョンをコピーします。
void
CopySubresourceRegion(
ID3D10Resource *pDstResource,
UINT DstSubresource,
UINT DstX,
UINT DstY,
UINT DstZ,
ID3D10Resource *pSrcResource,
UINT SrcSubresource,
const D3D10_BOX *pSrcBox
);
パラメータ
- pDstResource
コピー先リソースへのポインターです (「ID3D10Resource」を参照してください)。 - DstSubresource
コピー先サブリソースのインデックスです。 - DstX
コピー先リージョンの左上隅の x 座標です。 - DstY
コピー先リージョンの左上隅の y 座標です。 - DstZ
コピー先リージョンの左上隅の z 座標です。「解説」を参照してください。1D および 2D のサブリソースの場合は、ゼロを設定する必要があります。 - pSrcResource
コピー元リソースへのポインターです (「ID3D10Resource」を参照してください)。 - SrcSubresource
コピー元サブリソースのインデックスです。 - pSrcBox
コピー可能なコピー元サブリソースを定義する 3D ボックス (「D3D10_BOX」を参照) です。NULL の場合、コピー元サブリソースの全体がコピーされます。このボックスは、コピー元リソース内に収まっている必要があります。
戻り値
何も返しません。
解説
コピー元のボックスは、コピー元リソースのサイズ以内である必要があります。コピー先の場所は、絶対値です (相対値ではありません)。コピー先の場所は、コピー元の場所からのオフセットでもかまいませんが、コピーするリージョンのサイズ (コピー先の場所を含む) はコピー先リソース内に収まっている必要があります。
リソースがバッファーの場合は、すべての座標がバイト単位になります。リソースがテクスチャーの場合は、すべての座標がテクセル単位になります。D3D10CalcSubresource はサブリソースのインデックスを計算するヘルパー関数です。
CopySubresourceRegion は、GPU によってコピーを実行します (CPU による memcpy と似ています)。このため、コピー元とコピー先のリソースには以下の制約が適用されます。
- 異なるサブリソースである必要があります (ただし、同じリソースに由来するものでもかまいません)。
- 同じ種類である必要があります。
- フォーマットの互換性が必要です (同じフォーマット、または同じ種類のグループ)。たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャーを DXGI_FORMAT_R32G32B32_UINT テクスチャーにコピーできますが、その理由は、この 2 つのフォーマットが DXGI_FORMAT_R32G32B32_TYPELESS グループに属しているためです。
- 現在はマップを行うことはできません。
CopySubresourceRegion では、単なるコピーのみがサポートされ、引き伸ばし、カラー キー、ブレンド、フォーマット変換はサポートされません。リソース全体をコピーする必要があるアプリケーションでは、代わりに ID3D10Device::CopyResource を使用してください。
CopySubresourceRegion は、コマンド バッファー キューへの追加が可能な非同期呼び出しです。データのコピー時に発生する可能性のあるパイプライン ストールの排除が試行されます。詳細については、「パフォーマンスに関する考慮事項」を参照してください。
Direct3D 10 と Direct3D 10.1 の違い Direct3D 10 には、次の制約があります。
Direct3D 10.1 では、次のサポートが追加されます。
|
例
次のコードは、コピー元リージョン ((120,100),(200,220)) をコピー先リージョン ((130,120),(210,240)) にコピーします。
D3D10_BOX sourceRegion;
box.left = 120;
box.right = 200;
box.top = 100;
box.bottom = 220;
box.front = 0;
box.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 210, 0, pSourceTexture, 0, &sourceRegion );
2D テクスチャーの場合は、前面および背面がそれぞれ 0 および 1 に設定されます。
要件
ヘッダー: D3D10.h 宣言