ID3D11DeviceContext::CopyResource
GPU を使用して、コピー元リソースの内容全体をコピー先リソースにコピーします。
void
CopyResource(
ID3D11Resource *pDstResource,
ID3D11Resource *pSrcResource
);
パラメータ
- pDstResource
コピー先リソースへのポインターです (「ID3D11Resource」を参照してください)。 - pSrcResource
コピー元リソースへのポインターです (「ID3D11Resource」を参照してください)。
戻り値
何も返しません。
解説
このメソッドは、GPU がコピー処理を実行するという点で異例なメソッドです (CPU による memcpy に似ています)。このため、パフォーマンスの向上を目的とした制約がいくつか適用されます。たとえば、コピー元とコピー先のリソースに以下の制約が適用されます。
- 異なるリソースである必要があります。
- 同じ種類である必要があります。
- 次元 (幅、高さ、深度、サイズなど) が同じである必要があります。
- 単純なコピーのみが行われます。CopyResource では、引き伸ばし、カラー キー、ブレンド、フォーマット変換はサポートされません。
- DXGI フォーマットの互換性が必要です。言い換えると、フォーマットが同じであるか、少なくとも同じ種類のグループに属している必要があります。たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャーを DXGI_FORMAT_R32G32B32_UINT テクスチャーにコピーできますが、その理由は、この 2 つのフォーマットが DXGI_FORMAT_R32G32B32_TYPELESS グループに属しているためです。
- 現在はマップを行うことはできません。
固定リソース、および深度ステンシルリソースは、コピー先として使用できません。マルチサンプリング機能 (「DXGI_SAMPLE_DESC」を参照してください) を使用して作成したリソースは、コピー元とコピー先のいずれとしても使用できません。
このメソッドは、コマンド バッファー キューへの追加が可能な非同期呼び出しです。データのコピー時に発生する可能性のあるパイプライン ストールの排除が試行されます。
リソースのデータの一部のみをコピーする必要があるアプリケーションでは、このメソッドではなく ID3D11DeviceContext::CopySubresourceRegion を使用してください。
要件
ヘッダー: D3D11.h 宣言
ライブラリ: D3D11.lib 内容