共用方式為


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

另請參閱

複製描述項

ID3D12Device