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 |