функция обратного вызова PFND3D10DDI_RESOURCECOPYREGION (d3d10umddi.h)
Функция ResourceCopyRegion копирует исходный регион подресурса в расположение целевого подресурса.
Синтаксис
PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;
void Pfnd3d10ddiResourcecopyregion(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3,
UINT unnamedParam4,
UINT unnamedParam5,
UINT unnamedParam6,
D3D10DDI_HRESOURCE unnamedParam7,
UINT unnamedParam8,
const D3D10_DDI_BOX *unnamedParam9
)
{...}
Параметры
unnamedParam1
hDevice [in]
Дескриптор устройства отображения (графический контекст).
unnamedParam2
hDstResource [in]
Дескриптор целевого ресурса для копирования.
unnamedParam3
DstSubresource [in]
Индекс, указывающий целевой подресурс для копирования.
unnamedParam4
DstX [in]
Координата X целевого подресурса.
unnamedParam5
DstY [in]
Координата Y целевого подресурса. Для одномерных (1-D) подресурсов значение DstY равно нулю.
unnamedParam6
DstZ [in]
Z-координата целевого подресурса. Для одномерных (1-D) и двухмерных (2-D) подресурсов DstZ устанавливается равным нулю.
unnamedParam7
hSrcResource [in]
Дескриптор исходного ресурса для копирования.
unnamedParam8
SrcSubresource [in]
Индекс, указывающий исходный подресурс для копирования.
unnamedParam9
pSrcBox [in, необязательный]
Указатель на структуру D3D10_DDI_BOX , указывающую поле, помещающееся в исходном или целевом подресурсе. Если pSrcBox имеет значение NULL, драйвер должен скопировать весь исходный вложенный адрес в место назначения.
Если элементы структуры D3D10_DDI_BOX такие, что left>=right, top>=bottom или front>=back, то pSrcBox считается пустым, а ResourceCopyRegion не должен выполнять никаких операций копирования.
Возвращаемое значение
None
Remarks
Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.
Среда выполнения Microsoft Direct3D вызывает функцию ResourceCopyRegion драйвера отображения пользовательского режима, чтобы сообщить драйверу о копировании из указанного исходного подресурса в расположение указанного целевого подресурса. Исходный и целевой подресурсы не могут быть одинаковыми подресурсами одного и того же ресурса. Исходный и целевой ресурсы должны быть одного типа ресурсов и должны иметь типы форматов (DXGI_FORMAT типизированные значения), которые можно преобразовать друг в друга.
Для буферов все координаты должны быть в байтах; Тогда как для текстур все координаты должны быть в пикселях. Поле, на которое указывает параметр pSrcBox , не должно распространяться по краям области исходного подресурса или целевого подресурса. Исходный и целевой ресурсы в настоящее время не должны быть сопоставлены. Кроме того, флаги создания ресурса ограничивают, может ли ресурс участвовать в операции копирования.
Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Direct3D определит, что ошибка является критической. Даже если устройство было удалено, драйвер не обязан возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства помешает работе ResourceCopyRegion (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.
Версия Direct3D 10.1 ResourceCopyRegion имеет существенные отличия от Direct3D 10.0 в отношении элемента ResourceDimensionD3D10DDIARG_CREATERESOURCE для исходного и целевого ресурсов, созданных в вызовах функции CreateResource(D3D10) драйвера. Для версии Direct3D 10.0 ResourceCopyRegion элемент ResourceDimension D3D10DDIARG_CREATERESOURCE для исходного и целевого ресурсов должен совпадать. Версия Direct3D 10.1 ResourceCopyRegion позволяет немного расслабиться для элемента ResourceDimension D3D10DDIARG_CREATERESOURCE для исходного и целевого ресурсов. Версия Direct3D 10.1 ResourceCopyRegion позволяет копировать исходные ресурсы Tex2D в целевые ресурсы TexCube или исходные ресурсы TexCube в целевые ресурсы Tex2D. Кроме того, в Direct3D версии 10.1 отсутствует различие между TexCube на уровне ресурсов. Версия ResourceCopyRegion для Direct3D 10.1 только указывает, может ли она копировать TexCube. В Direct3D версии 10.0 копирование ресурса, проверка нескольких целевых объектов отрисовки и т. д. (т. е. различные операции, которые требовали, чтобы тип ресурса был идентичным) включали различие TexCube для определения типа ресурса. В Direct3D версии 10.1 среда выполнения может определять только Tex2D.
В следующих разделах перечислены условия для копирования и преобразования.
Копирование
Для копирования ResourceCopyRegion гарантирует, что исходный и целевой ресурсы были созданы с помощью функции Драйвера CreateResource(D3D10) со следующими условиями:
- Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D10DDIARG_CREATERESOURCE .
- Если исходный или целевой ресурс имеет D3D10_DDI_BIND_DEPTH_STENCIL бит, заданный в элементе BindFlags D3D10DDIARG_CREATERESOURCE или является ресурсом с несколькими выборками, ResourceCopyRegion проверяет, что параметр pSrcBox имеет значение NULL, а параметры DstX, DstY и DstZ — 0.
- Индексы подресурсов находятся в диапазоне.
- Ограничения выравнивания применяются к координатам.
- Исходный и целевой ресурсы не являются частью одного и того же подресурса.
- Каждый формат исходного и целевого ресурсов, указанный в элементе Format D3D10DDIARG_CREATERESOURCE, входит в одну и ту же бестипную группу.
- Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
Преобразование
Для преобразования ResourceCopyRegion гарантирует, что исходный и целевой ресурсы были созданы с помощью функции Драйвера CreateResource(D3D10) со следующими условиями:
- Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D10DDIARG_CREATERESOURCE .
- Если исходный или целевой ресурс имеет D3D10_DDI_BIND_DEPTH_STENCIL бит, заданный в элементе BindFlags D3D10DDIARG_CREATERESOURCE или является ресурсом с несколькими выборками, ResourceCopyRegion проверяет, что параметр pSrcBox имеет значение NULL, а параметры DstX, DstY и DstZ — 0.
- Индексы подресурсов находятся в диапазоне.
- Ограничения выравнивания применяются к координатам.
- Исходный и целевой ресурсы не являются частью одного и того же подресурса.
- Каждый формат исходного и целевого ресурсов, указанный в элементе Format D3D10DDIARG_CREATERESOURCE, входит в одну и ту же бестипную группу.
- Каждый формат исходного и целевого ресурсов, указанный в элементе Format D3D10DDIARG_CREATERESOURCE, поддерживает соответствующую операцию преобразования.
- Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3d10umddi.h (включая D3d10umddi.h) |