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