ID3D10Device::CopyResource メソッド (d3d10.h)
GPU を使用して、ソース リソースの内容全体をターゲット リソースにコピーします。
構文
void CopyResource(
[in] ID3D10Resource *pDstResource,
[in] ID3D10Resource *pSrcResource
);
パラメーター
[in] pDstResource
種類: ID3D10Resource*
宛先リソースへのポインター ( 「ID3D10Resource」を参照)。
[in] pSrcResource
種類: ID3D10Resource*
ソース リソースへのポインター ( 「ID3D10Resource」を参照)。
戻り値
なし
解説
この方法は、GPU がコピー操作を実行する (CPU による memcpy に似ている) という点で通常とは異なっています。 その結果、パフォーマンスを向上させるために設計されたいくつかの制限があります。 たとえば、ソースリソースと移行先リソースは次のようになります。
- 異なるリソースである必要があります。
- 同じ 型である必要があります。
- 同じディメンション (必要に応じて幅、高さ、深さ、サイズを含む) を持つ必要があります。
- 互換性のある 形式が必要です。つまり、形式は同一であるか、少なくとも同じ型グループに含まれている必要があります。 たとえば、DXGI_FORMAT_R32G32B32_FLOAT テクスチャは、両方の形式が DXGI_FORMAT_R32G32B32_TYPELESS グループ内に存在するため、DXGI_FORMAT_R32G32B32_UINT テクスチャにコピーできます。 Direct3D 10.1 以降では、 CopyResource はいくつかの形式の種類間でコピーできます。 詳細については、「 Direct3D 10.1 を使用した変換の書式設定」を参照してください。
- 現在 マップされていない可能性があります。
変更できない、 および深度ステンシルの リソースを変換先として使用することはできません。 マルチサンプリング機能を使用して作成されたリソースは、ソースまたは宛先として使用できません。
メソッドは、コマンド バッファー キューに追加できる非同期呼び出しです。 これにより、データのコピー時に発生する可能性があるパイプラインの停止を削除しようとします。 詳細については、「 パフォーマンスに関する考慮事項 」を参照してください。
リソース内のデータの一部のみをコピーする必要があるアプリケーションでは、代わりに ID3D10Device::CopySubresourceRegion を 使用する必要があります。
Direct3D 10 と Direct3D 10.1 の違い: Direct3D 10.1 を使用すると、深度ステンシル リソースをソースまたは変換先として使用できます。 Direct3D 10.1 を使用すると、ソースと宛先の両方に同じマルチサンプリング数と品質がある場合にのみ、マルチサンプリングされたリソースをソースと宛先として使用できます。 ソースと宛先がマルチサンプリング数と品質で異なる場合、またはその 1 つがマルチサンプリングで、もう一方がマルチサンプリングされていない場合、 ID3D10Device::CopyResource の呼び出しは失敗します。 事前構造化+型指定されたリソースとブロック圧縮テクスチャの間でコピーできます。 「Direct3D 10.1 を使用した変換の書式設定」を参照してください。 |
必要条件
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |
Library | D3D10.lib |