Поделиться через


Метод 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, указывающее тип кучи дескриптора для копирования. Это необходимо, так как разные типы дескрипторов могут иметь разные размеры.

Исходные и целевые кучи дескриптора должны иметь одинаковый тип, в противном случае уровень отладки выдает ошибку.

Возвращаемое значение

None

Remarks

В соответствующих случаях рекомендуется использовать этот метод ID3D12Device::CopyDescriptorsSimple . Он может иметь более высокую скорость пропуска кэша ЦП из-за линейного характера копирования.

Требования

Требование Значение
Целевая платформа Windows
Header d3d12.h
Библиотека D3D12.lib
DLL D3D12.dll

См. также раздел

Копирование дескрипторов

ID3D12Device