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


Метод ID3D11DeviceContext::CopyResource (d3d11.h)

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

Синтаксис

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

Параметры

[in] pDstResource

Тип: ID3D11Resource*

Указатель на интерфейс ID3D11Resource , представляющий целевой ресурс.

[in] pSrcResource

Тип: ID3D11Resource*

Указатель на интерфейс ID3D11Resource , представляющий исходный ресурс.

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

None

Remarks

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

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

Неизменяемый ресурс нельзя использовать в качестве назначения. Ресурс трафарета глубины можно использовать в качестве источника или назначения при условии, что уровень компонентов D3D_FEATURE_LEVEL_10_1 или выше. Для уровней компонентов 9_x ресурсы, созданные с флагом D3D11_BIND_DEPTH_STENCIL, можно использовать только в качестве источника для CopyResource. Ресурсы, созданные с возможностью множественной дискретизации (см . DXGI_SAMPLE_DESC), можно использовать в качестве источника и назначения только в том случае, если оба источника и назначения имеют одинаковое количество и качество нескольких дискретов. Если источник и назначение отличаются по количеству и качеству с несколькими выборками или если один из них имеет несколько выборок, а другой — не многоизванный, вызов ID3D11DeviceContext::CopyResource завершается ошибкой . Используйте ID3D11DeviceContext::ResolveSubresource , чтобы разрешить ресурс с несколькими дискретами в ресурс, который не является многоизбранным.

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

Рекомендуется использовать ID3D11DeviceContext::CopySubresourceRegion , если требуется скопировать только часть данных в ресурс.

Требования

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

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

ID3D11DeviceContext

ID3D11Resource