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


функция обратного вызова PFND3D11_1DDI_RESOURCECOPYREGION (d3d10umddi.h)

Копирует исходный регион подресурса в расположение целевого подресурса.

Синтаксис

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

Параметры

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 [в, необязательно]

Указатель на структуру D3D10_DDI_BOX , указывающую поле, которое помещается в исходном или целевом подресурсе. Если pSrcBox имеет значение NULL, драйвер должен скопировать весь исходный вложенный адрес в место назначения.

Если элементы структуры D3D10_DDI_BOX таковы, что left>=right, top>=bottom или front>=back, то pSrcBox считается пустым, а ResourceCopyRegion(D3D11_1) не должен выполнять никаких операций копирования.

[in] CopyFlags

Значение типа , указывающее характеристики операции копирования в виде побитового ИЛИ значений в типе перечисления D3D11_1_DDI_COPY_FLAGS .

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

None

Remarks

Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.

Среда выполнения Microsoft Direct3D вызывает функцию ResourceCopyRegion(D3D11_1) драйвера отображения пользовательского режима, чтобы сообщить драйверу о копировании из указанного исходного региона подресурса в расположение указанного целевого подресурса. Исходный и целевой подресурс могут быть одинаковым подресурсом одного и того же ресурса. Исходный и целевой ресурсы должны иметь один и тот же тип ресурса и иметь типы форматирования (DXGI_FORMAT типизированные значения), которые можно преобразовать друг в друга.

Для буферов все координаты должны быть в байтах; Тогда как для текстур все координаты должны быть в пикселях. Поле, на которое указывает параметр pSrcBox , не должно распространяться по краям исходного или целевого подресурса. Источник и целевой ресурс в настоящее время не должны быть сопоставлены. Кроме того, флаги создания ресурсов ограничивают возможность участия ресурса в операции копирования.

Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Direct3D определит, что ошибка является критической. Даже если устройство было удалено, драйвер не должен возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства помешает работе (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.

Драйвер может реализовать функцию ResourceCopyRegion(D3D11_1), которая может содержать инструкцию switch для обработки копирования и преобразования. То есть драйвер может реализовать один ResourceCopyRegion(D3D11_1) и задать элемент pfnResourceConvertRegion структуры D3D11_1DDI_DEVICEFUNCS , чтобы он указывал на ResourceCopyRegion(D3D11_1) вместе с элементом pfnResourceCopyCopyRegionD3D11_1DDI_DEVICEFUNCS. Однако для повышения производительности драйвер может реализовать отдельные функции ResourceCopyRegion(D3D11_1) и ResourceConvertRegion(D3D11_1).

В следующих разделах перечислены условия для копирования и преобразования.

Копирование

Для копирования ResourceCopyRegion(D3D11_1) гарантирует, что исходный и целевой ресурсы были созданы с помощью функции CreateResource(D3D11) драйвера со следующими условиями:

  • Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D11DDIARG_CREATERESOURCE .
  • Если исходный или целевой ресурс имеет D3D10_DDI_BIND_DEPTH_STENCIL бит, заданный в элементе BindFlags D3D10DDIARG_CREATERESOURCE или является ресурсом с несколькими выборками, ResourceCopyRegion(D3D11_1) проверяет, имеет ли параметр pSrcBoxзначение NULL, а параметры DstX, DstY и DstZ равны 0.
  • Индексы подресурсов находятся в диапазоне.
  • Ограничения выравнивания применяются к координатам.
  • Исходный и целевой ресурсы не являются частью одного и того же подресурса.
  • Каждый исходный и целевой формат ресурсов, указанный в элементе FormatD3D11DDIARG_CREATERESOURCE , находится в одной группе без типов.
  • Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
ResourceCopyRegion(D3D11_1) не гарантирует, что поле источника, смещение по конечным смещениям, полностью соответствует ресурсу. ResourceCopyRegion(D3D11_1) также не гарантирует, что в настоящее время не сопоставлены подресурсы.

Преобразование

Для преобразования ResourceCopyRegion(D3D11_1) гарантирует, что исходный и целевой ресурсы были созданы с помощью функции CreateResource(D3D11) драйвера со следующими условиями:

  • Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D11DDIARG_CREATERESOURCE .
  • Если исходный или целевой ресурс имеет D3D10_DDI_BIND_DEPTH_STENCIL бит, заданный в элементе BindFlagsD3D11DDIARG_CREATERESOURCE или является ресурсом с несколькими выборками, ResourceCopyRegion(D3D11_1) проверяет, имеет ли параметр pSrcBoxзначение NULL, а параметры DstX, DstY и DstZ равны 0.
  • Индексы подресурсов находятся в диапазоне.
  • Ограничения выравнивания применяются к координатам.
  • Исходный и целевой ресурсы не являются частью одного и того же подресурса.
  • Каждый исходный и целевой формат ресурсов, указанный в элементе FormatD3D11DDIARG_CREATERESOURCE , находится в одной группе без типов.
  • Каждый формат исходного и целевого ресурсов, указанный в элементе FormatD3D11DDIARG_CREATERESOURCE поддерживает соответствующую операцию преобразования.
  • Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
ResourceCopyRegion(D3D11_1) не гарантирует, что в настоящее время не сопоставлены подресурсы. ResourceCopyRegion(D3D11_1) также не гарантирует, что поле источника, смещение по конечным смещениям, полностью соответствует ресурсу.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

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

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb