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 |
程式庫 | D3D12.lib |
Dll | D3D12.dll |