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


Метод ID3D10Device::CopyResource (d3d10.h)

Скопируйте все содержимое исходного ресурса в целевой ресурс с помощью GPU.

Синтаксис

void CopyResource(
  [in] ID3D10Resource *pDstResource,
  [in] ID3D10Resource *pSrcResource
);

Параметры

[in] pDstResource

Тип: ID3D10Resource*

Указатель на целевой ресурс (см. ID3D10Resource).

[in] pSrcResource

Тип: ID3D10Resource*

Указатель на исходный ресурс (см. ID3D10Resource).

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

None

Remarks

Этот метод является необычным тем, что он заставляет GPU выполнять операцию копирования (аналогично memcpy ЦП). В результате он имеет несколько ограничений, предназначенных для повышения производительности. Например, исходный и целевой ресурсы:

  • Должны быть разные ресурсы.
  • Должен иметь один и тот же тип.
  • Должны иметь одинаковые размеры (включая ширину, высоту, глубину и размер в зависимости от необходимости).
  • Должны иметь совместимые форматы, что означает, что форматы должны быть идентичными или, по крайней мере, из одной группы типов. Например, текстуру DXGI_FORMAT_R32G32B32_FLOAT можно скопировать в DXGI_FORMAT_R32G32B32_UINT текстуру, так как оба этих формата находятся в группе DXGI_FORMAT_R32G32B32_TYPELESS. Начиная с Direct3D 10.1 , CopyResource может копировать данные между несколькими типами форматов. Дополнительные сведения см. в разделе Преобразование формата с помощью Direct3D 10.1.
  • Может не быть сопоставлен в данный момент.
CopyResource поддерживает только копирование; он не поддерживает преобразование растяжения, цветового ключа, смешения или форматирования. Начиная с Direct3D 10.1 , CopyResource может переосмыслить данные ресурсов между несколькими типами форматов. Дополнительные сведения см. в разделе Преобразование формата с помощью Direct3D 10.1.

Неизменяемые ресурсы и трафареты глубины не могут использоваться в качестве назначения. Ресурсы, созданные с возможностью множественной выборки , не могут использоваться в качестве источника или назначения.

Метод является асинхронным вызовом, который может быть добавлен в очередь буфера команд. При этом выполняется попытка удалить остановки конвейера, которые могут возникнуть при копировании данных. Дополнительные сведения см. в разделе Рекомендации по производительности .

Приложение, которое должно копировать только часть данных в ресурсе, должно использовать id3D10Device::CopySubresourceRegion .

Различия между Direct3D 10 и Direct3D 10.1:

Direct3D 10.1 позволяет использовать ресурсы трафарета глубины в качестве источника или назначения. Direct3D 10.1 позволяет использовать многомерные ресурсы в качестве источника и назначения только в том случае, если оба источника и назначения имеют одинаковое количество и качество. Если источник и назначение отличаются по количеству и качеству нескольких выборок или один из них имеет значение multisampled, а другой — не multisampled, вызов ID3D10Device::CopyResource завершается ошибкой .

Можно копировать между предварительно структурированными и типизированными ресурсами и текстурами со сжатием блоков. См . раздел Преобразование формата с помощью Direct3D 10.1.

Требования

   
Целевая платформа Windows
Header d3d10.h
Библиотека D3D10.lib

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

ID3D10Device

Интерфейс ID3D10Resource