Метод ID3D10Device::CopySubresourceRegion (d3d10.h)
Скопируйте регион из исходного ресурса в целевой ресурс.
Синтаксис
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
Параметры
[in] pDstResource
Тип: ID3D10Resource*
Указатель на целевой ресурс (см. ID3D10Resource).
[in] DstSubresource
Тип: UINT
Индекс подресурсов назначения.
[in] DstX
Тип: UINT
Координата x левого верхнего угла области назначения.
[in] DstY
Тип: UINT
Координата Y левого верхнего угла области назначения.
[in] DstZ
Тип: UINT
Координата z левого верхнего угла области назначения. Для подресурса 1D или 2D это значение должно быть равно нулю.
[in] pSrcResource
Тип: ID3D10Resource*
Указатель на исходный ресурс (см. ID3D10Resource).
[in] SrcSubresource
Тип: UINT
Индекс подресурсов источника.
[in] pSrcBox
Тип: const D3D10_BOX*
Трехмерное поле (см . D3D10_BOX), определяющее исходный подресурс, который можно скопировать. Если значение РАВНО NULL, копируется весь исходный подресурс. Поле должно помещаться в исходном ресурсе.
Пустое поле приводит к тому, что операция не будет. Поле пусто, если верхнее или равно нижнему значению, или левое значение больше или равно правому значению, или значение переднего края больше или равно обратному значению. Если поле пусто, CopySubresourceRegion не выполняет операцию копирования.
Возвращаемое значение
None
Remarks
Поле источника должно быть в пределах размера исходного ресурса. Целевое расположение является абсолютным значением (не относительным значением). Расположение назначения может быть смещено от исходного расположения; однако размер региона для копирования (включая расположение назначения) должен соответствовать целевому ресурсу.
Если ресурсы являются буферами, все координаты находятся в байтах; Если ресурсы являются текстурами, все координаты находятся в текселях.
D3D10CalcSubresource — это вспомогающая функция для вычисления индексов подресурсов.
CopySubresourceRegion выполняет копирование на GPU (аналогично memcpy ЦП). Как следствие, исходные и целевые ресурсы должны соответствовать следующим критериям:
- Должны быть разными подресурсами (хотя они могут относиться к одному ресурсу).
- Должен иметь один и тот же тип.
- Должны иметь совместимые форматы (форматы должны быть идентичными или принадлежать к одной группе типов). Например, DXGI_FORMAT_R32G32B32_FLOAT текстуру можно скопировать в DXGI_FORMAT_R32G32B32_UINT текстуру, так как оба этих формата находятся в группе DXGI_FORMAT_R32G32B32_TYPELESS. Начиная с Direct3D 10.1 , CopySubresourceRegion может копировать данные между несколькими типами форматов. Дополнительные сведения см. в разделе Преобразование формата с помощью Direct3D 10.1.
- Может не быть сопоставлен в данный момент.
Если приложению необходимо скопировать весь ресурс, рекомендуется использовать id3D10Device::CopyResource .
CopySubresourceRegion — это асинхронный вызов, который среда выполнения может добавить в очередь буфера команд. Это асинхронное поведение позволяет удалить остановки конвейера, которые могут возникать при копировании данных. Дополнительные сведения см. в разделе Рекомендации по производительности .
Различия между Direct3D 10 и Direct3D 10.1: Direct3D 10 имеет следующие ограничения.
|
Примере
Следующий фрагмент кода копирует поле (120 100),(200 220)) из исходной текстуры в область (130 120),(210 240) в целевой текстуре.
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
Обратите внимание, что для двухd текстуры передняя и задняя всегда имеют значение 0 и 1 соответственно.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d10.h |
Библиотека | D3D10.lib |