> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CopyDescriptors

> 將描述元從來源複製到目的地。(ID3D12Device.CopyDescriptors)

將描述元從來源複製到目的地。

## 語法

```cpp theme={null}
void CopyDescriptors(
    UINT NumDestDescriptorRanges,
    const D3D12_CPU_DESCRIPTOR_HANDLE  pDestDescriptorRangeStarts,
    const UINT  pDestDescriptorRangeSizes,
    UINT NumSrcDescriptorRanges,
    const D3D12_CPU_DESCRIPTOR_HANDLE  pSrcDescriptorRangeStarts,
    const UINT  pSrcDescriptorRangeSizes,
    D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType
)
```

### 參數

*NumDestDescriptorRanges \[in]*\
類型：UINT

要複製到的目的地描述元範圍數目。

*pDestDescriptorRangeStarts \[in]*\
類型：const D3D12\_CPU\_DESCRIPTOR\_HANDLE \*

要複製到的 **[D3D12\_CPU\_DESCRIPTOR\_HANDLE](/zh-TW/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public)** 物件陣列。

所有目的地和來源描述元都必須位於相同 [D3D12\_DESCRIPTOR\_HEAP\_TYPE](/zh-TW/reference/graphics/d3d12/enums/d3d12_descriptor_heap_type_public) 的堆積中。

*pDestDescriptorRangeSizes \[in, optional]*\
類型：const UINT \*

要複製到的目的地描述元範圍大小陣列。

*NumSrcDescriptorRanges \[in]*\
類型：UINT

要從中複製的來源描述元範圍數目。

*pSrcDescriptorRangeStarts \[in]*\
類型：const D3D12\_CPU\_DESCRIPTOR\_HANDLE \*

要從中複製的 **[D3D12\_CPU\_DESCRIPTOR\_HANDLE](/zh-TW/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public)** 物件陣列。

<Info>
  *pSrcDescriptorRangeStarts* 參數中的所有元素都必須位於非著色器可見的描述元堆積中。這是因為著色器可見的描述元堆積可能建立在 **WRITE\_COMBINE** 記憶體或 GPU 本機記憶體中，從中讀取的速度極慢。如果您的應用程式是透過將特定階段或畫面所需的描述元從本機「儲存」描述元堆積複製到繫結至 GPU 的描述元堆積來管理描述元堆積，請將著色器不透明堆積用於儲存堆積，並視需要複製到 GPU 可見的堆積中。
</Info>

*pSrcDescriptorRangeSizes \[in, optional]*\
類型：const UINT \*

要從中複製的來源描述元範圍大小陣列。

*DescriptorHeapsType \[in]*\
類型：D3D12\_DESCRIPTOR\_HEAP\_TYPE

[D3D12\_DESCRIPTOR\_HEAP\_TYPE](/zh-TW/reference/graphics/d3d12/enums/d3d12_descriptor_heap_type_public) 類型的值，指定要複製的描述元堆積類型。這是必要的，因為不同的描述元類型可能有不同的大小。

來源和目的地描述元堆積必須具有相同的類型，否則偵錯層會發出錯誤。

### 傳回值

類型：void

無。

## 備註

在適用的情況下，建議優先使用 [**ID3D12Device::CopyDescriptorsSimple**](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_copydescriptorssimple_public) 而非此方法。由於其複製是線性的，因此 CPU 快取遺漏率可能較佳。

## 需求

**標頭：** d3d12\_xs.h 或 d3d12\_x.h\
**程式庫：** d3d12\_xs.lib 或 d3d12\_x.lib\
**支援的平台**：XBOX Series 主機與 XBOX One 系列

## 另請參閱

[複製描述元](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/copying-descriptors)

[ID3D12Device](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [CopyDescriptorsSimple](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_copydescriptorssimple_public.md)
- [D3D12_DESCRIPTOR_HEAP_TYPE](/zh-TW/reference/graphics/d3d12/enums/d3d12_descriptor_heap_type_public.md)
- [D3D12_CPU_DESCRIPTOR_HANDLE](/zh-TW/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public.md)
- [SetDescriptorHeaps](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_setdescriptorheaps_public.md)
- [CopyTiles](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytiles_public.md)
