次の方法で共有


ID3D10Device::CopyResource

GPU を使用して、コピー元リソースの内容全体をコピー先リソースにコピーします。

void 
CopyResource(
  ID3D10Resource *pDstResource,
  ID3D10Resource *pSrcResource
);

パラメータ

  • pDstResource
    コピー先リソースへのポインターです (「ID3D10Resource」を参照してください)。
  • pSrcResource
    コピー元リソースへのポインターです (「ID3D10Resource」を参照してください)。

戻り値

何も返しません。

解説 

このメソッドは、GPU がコピー処理を実行するという点で異例なメソッドです (CPU による memcpy に似ています)。このため、パフォーマンスの向上を目的とした制約がいくつか適用されます。たとえば、コピー元とコピー先のリソースに以下の制約が適用されます。

  • 異なるリソースである必要があります。
  • 同じ種類である必要があります。
  • 次元 (幅、高さ、深度、サイズなど) が同じである必要があります。
  • 単純なコピーのみが行われます。CopyResource では、引き伸ばし、カラー キー、ブレンド、フォーマット変換はサポートされません。
  • フォーマットの互換性が必要です。言い換えると、フォーマットが同じであるか、少なくとも同じ種類のグループに属している必要があります。たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャーを DXGI_FORMAT_R32G32B32_UINT テクスチャーにコピーできますが、その理由は、この 2 つのフォーマットが DXGI_FORMAT_R32G32B32_TYPELESS グループに属しているためです。
  • 現在はマップを行うことはできません。

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

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

リソースのデータの一部のみをコピーする必要があるアプリケーションでは、このメソッドではなく ID3D10Device::CopySubresourceRegion を使用してください。

Direct3D 10 と Direct3D 10.1 の違い

Direct3D 10.1 では、深度ステンシル リソースおよびマルチサンプリングされたリソースをコピー元またはコピー先として使用できます。

事前に構造化され型が指定されたリソースと、ブロック圧縮されたテクスチャーとの間のコピーが可能です。「Direct3D 10.1 を使用したフォーマット変換」を参照してください。

要件

ヘッダー: D3D10.h 宣言

ライブラリ: D3D10.lib 内容

関連項目

ID3D10Resource インターフェイス