次の方法で共有


ID3D12Device::CopyDescriptors メソッド (d3d12.h)

ソースから宛先に記述子をコピーします。

構文

void CopyDescriptors(
  [in]           UINT                              NumDestDescriptorRanges,
  [in]           const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  [in, optional] const UINT                        *pDestDescriptorRangeSizes,
  [in]           UINT                              NumSrcDescriptorRanges,
  [in]           const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  [in, optional] const UINT                        *pSrcDescriptorRangeSizes,
  [in]           D3D12_DESCRIPTOR_HEAP_TYPE        DescriptorHeapsType
);

パラメーター

[in] NumDestDescriptorRanges

型: UINT

コピー先の記述子範囲の数。

[in] pDestDescriptorRangeStarts

型: const D3D12_CPU_DESCRIPTOR_HANDLE*

コピー先の D3D12_CPU_DESCRIPTOR_HANDLE オブジェクトの配列。

すべての宛先記述子とソース記述子は、同じ D3D12_DESCRIPTOR_HEAP_TYPEのヒープ内にある必要があります。

[in, optional] pDestDescriptorRangeSizes

型: const UINT*

コピー先の記述子範囲サイズの配列。

[in] NumSrcDescriptorRanges

型: UINT

コピー元のソース記述子範囲の数。

[in] pSrcDescriptorRangeStarts

型: const D3D12_CPU_DESCRIPTOR_HANDLE*

コピー元の D3D12_CPU_DESCRIPTOR_HANDLE オブジェクトの配列。

重要

pSrcDescriptorRangeStarts パラメーター内のすべての要素は、シェーダーに表示されない記述子ヒープ内にある必要があります。 これは、シェーダーに表示される記述子ヒープが WRITE_COMBINE メモリまたは GPU ローカル メモリに作成される可能性があるためです。これは、読み取りが非常に遅いためです。 アプリケーションで、特定のパスまたはフレームに必要な記述子をローカルの "ストレージ" 記述子ヒープから GPU バインド記述子ヒープにコピーして記述子ヒープを管理する場合は、ストレージ ヒープにシェーダー不透明ヒープを使用し、必要に応じて GPU に表示されるヒープにコピーします。

[in, optional] pSrcDescriptorRangeSizes

型: const UINT*

コピー元のソース記述子範囲サイズの配列。

[in] DescriptorHeapsType

種類: D3D12_DESCRIPTOR_HEAP_TYPE

コピーする記述子ヒープの種類を指定する D3D12_DESCRIPTOR_HEAP_TYPE型指定された値。 記述子の種類によってサイズが異なる場合があるため、これは必須です。

ソース記述子ヒープと宛先記述子ヒープの両方が同じ型である必要があります。それ以外の場合、デバッグ レイヤーはエラーを出力します。

戻り値

なし

解説

必要に応じて、このメソッドよりも ID3D12Device::CopyDescriptorsSimple を使用します。 コピーの線形的な性質により、CPU キャッシュ ミス率が向上する可能性があります。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3D12.lib
[DLL] D3D12.dll

こちらもご覧ください

記述子のコピー

ID3D12Device