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

Функция ResourceCopy копирует весь исходный ресурс в целевой ресурс.

Синтаксис

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

Параметры

unnamedParam1

hDevice [in]

Дескриптор устройства отображения (графический контекст).

unnamedParam2

hDstResource [in]

Дескриптор целевого ресурса для копирования.

unnamedParam3

hSrcResource [in]

Дескриптор исходного ресурса для копирования.

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

None

Remarks

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

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

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

Примечание Следующие разделы относятся только к Microsoft Direct3D версии 10.1 и более поздних версий (то есть Windows Vista с пакетом обновления 1 (SP1) и более поздних версий, а также Windows Server 2008 и более поздних версий.
 
Драйвер может реализовать функцию ResourceCopy , которая может содержать инструкцию switch для обработки копирования и преобразования. То есть драйвер может реализовать одну модель ResourceCopy и задать элемент pfnResourceConvertструктуры D3D10_1DDI_DEVICEFUNCS , указывающий на ResourceCopy вместе с элементом pfnResourceCopy D3D10_1DDI_DEVICEFUNCS. Однако для повышения производительности драйвер может реализовать отдельные функции ResourceCopy и ResourceConvert .

Версия Direct3D 10.1 ResourceCopy имеет существенное отличие функций от Версии Direct3D 10.0 в отношении элемента ResourceDimensionD3D10DDIARG_CREATERESOURCE для исходных и целевых ресурсов, созданных в вызовах функции Драйвера CreateResource(D3D10). Для версии Direct3D 10.0 ResourceCopy элемент ResourceDimension D3D10DDIARG_CREATERESOURCE для исходного и целевого ресурсов должен совпадать. Версия Direct3D 10.1 ResourceCopy позволяет немного расслабиться для элемента ResourceDimension D3D10DDIARG_CREATERESOURCE для исходных и целевых ресурсов. Версия ResourceCopy Direct3D 10.1 позволяет копировать исходные ресурсы Tex2D в целевые ресурсы TexCube или исходные ресурсы TexCube в целевые ресурсы Tex2D. Кроме того, в Direct3D версии 10.1 отсутствует различие между TexCube на уровне ресурсов. Версия Direct3D 10.1 ResourceCopy только указывает, может ли она копировать TexCube. В Direct3D версии 10.0 копирование ресурса, проверка нескольких целевых объектов отрисовки и т. д. (т. е. различные операции, которые требовали, чтобы тип ресурса был идентичным) включали различие TexCube для определения типа ресурса. В Direct3D версии 10.1 среда выполнения может определять только Tex2D.

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

Копирование

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

  • Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D10DDIARG_CREATERESOURCE .
  • Исходный и целевой ресурсы были созданы с одинаковым типом ресурса и размерностью (буфер, одномерная текстура и т. д.), задав одно и то же значение в элементе ResourceDimension D3D10DDIARG_CREATERESOURCE.
  • Исходный и целевой ресурсы не являются частью одного и того же ресурса.
  • Каждый формат исходного и целевого ресурсов, указанный в элементе Format D3D10DDIARG_CREATERESOURCE, входит в одну и ту же бестипную группу.
  • Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
ResourceCopy не гарантирует, что в настоящее время не сопоставлены подресурсы.

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

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

  • Целевой ресурс не был создан со значением D3D10_DDI_USAGE_IMMUTABLE, заданным в элементе Usage структуры D3D10DDIARG_CREATERESOURCE .
  • Исходные и целевые ресурсы были созданы с одним типом ресурса (буфер, одномерная (одномерная) текстура и т. д.), задав одно и то же значение в элементе ResourceDimension D3D10DDIARG_CREATERESOURCE.
  • Измерения исходного и целевого ресурсов соответствуют для преобразования.
  • Исходный и целевой ресурсы не являются частью одного и того же ресурса.
  • Каждый формат исходного и целевого ресурсов, указанный в элементе Format D3D10DDIARG_CREATERESOURCE, поддерживает соответствующую операцию преобразования. Для сжатых ресурсов mipped-block все измерения проверяются на два значения.
  • Исходные и целевые ресурсы должны иметь одинаковое количество выборок и уровни качества; за исключением ресурсов с одной выборкой, которые должны иметь только одинаковое количество выборок.
ResourceCopy не гарантирует, что в настоящее время не сопоставлены подресурсы.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

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

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb