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


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

Функция Blt копирует содержимое исходной поверхности в целевую область.

Синтаксис

PFND3DDDI_BLT Pfnd3dddiBlt;

HRESULT Pfnd3dddiBlt(
  HANDLE hDevice,
  const D3DDDIARG_BLT *unnamedParam2
)
{...}

Параметры

hDevice

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

unnamedParam2

pData [in]

Указатель на структуру D3DDDIARG_BLT, описывающую параметры передачи битового блока (bitblt).

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

Blt возвращает одно из следующих значений:

код возврата описание
S_OK Bitblt для ресурса успешно выполнен.
E_OUTOFMEMORY Blt не удалось выделить необходимую память для завершения.

Замечания

Среда выполнения Microsoft Direct3D вызывает функцию драйвера в режиме пользователя Blt, чтобы скопировать содержимое исходной поверхности в целевую область. После сопоставления ссылок поверхности на ссылки на выделение драйвер отображения в пользовательском режиме должен выдавать соответствующие аппаратные команды. Если исходное или целевое выделение находится в системной памяти, драйвер отображения в пользовательском режиме может потребоваться для синхронизации (то есть вызовите функцию pfnRenderCb), если выдающийся аппаратный поток команд содержит ссылки на выделение системной памяти. Если исходные и целевые выделения находятся в системной памяти, драйвер должен синхронизироваться по мере необходимости, но не должен копировать содержимое исходной поверхности. Среда выполнения Direct3D копирует содержимое после вызова pfnRenderCb.

Драйвер отображения в пользовательском режиме должен обрабатывать следующие условия, которые могут возникнуть во время операции копирования:

  • Конечные и исходные поверхности являются частью одного ресурса (т. е. hSrcResource и hDstResource членов D3DDDIARG_BLT указывают дескриптор для одного ресурса).
  • Прямоугольники источника и назначения перекрываются (т. е. координаты структуры RECT в SrcRect и DstRect элементов D3DDDIARG_BLT перекрываются).
Драйвер отображения в пользовательском режиме должен обрабатывать все bitblt и из памяти видео, включая bitblt из памяти видео в системную память. Если драйвер отображения в пользовательском режиме не может использовать модуль обработки графики (GPU) для выдачи bitblt из памяти видео в системную память, драйвер отображения в пользовательском режиме может скопировать данные с помощью ЦП.

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

Тип bitblt, выполняемый, указывается с помощью флагов битового поля, указанных в элементе Flags элемента D3DDDIARG_BLT. В битовые фрагменты памяти видео можно включить преобразование цветового ключа, растяжения, зеркального отображения и преобразования формата линейного в SRGB. Системная память к битам памяти видео может включать преобразование формата stretching и linear-to-sRGB; однако эти типы битблтов никогда не включают зеркальное отображение или цветовую схему. Все видеопамяты для битов памяти системы и системной памяти в системные биты памяти являются прямыми копиями. То есть эти типы битов никогда не включают растягивание, зеркальное отображение, цветовую клавишу или преобразование формата линейного типа в SRGB. Дополнительные сведения о формате sRGB см. на веб-сайте sRGB.

Дополнительные сведения о правилах, которые должна следовать функция Blt при преобразовании значений элементов глубины, см. в копирования значений Depth-Stencil.

Среда выполнения Direct3D может вызывать функцию драйвера отображения в режиме пользователя Blt, чтобы скопировать содержимое любого исходного типа поверхности (например, внеэкранного типа, типа целевого объекта отрисовки или типа текстуры) в любой другой тип области назначения.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях операционных систем Windows.
целевая платформа Настольный
заголовка d3dumddi.h (include D3dumddi.h)

См. также

D3DDDIARG_BLT

D3DDDI_DEVICEFUNCS

pfnRenderCb