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