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


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

Функция обратного вызова CreateD3DBuffer используется для создания команды или буфера вершин на уровне драйвера с указанным описанием.

Синтаксис

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Параметры

unnamedParam1

Указывает на DD_CREATESURFACEDATA структуру, содержащую сведения, необходимые для создания буфера.

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

CreateD3DBuffer возвращает один из следующих кодов обратного вызова:

Комментарии

Этот обратный вызов используется только в том случае, если драйвер управляет командой на уровне драйвера и буферами вершин.

По умолчанию драйвер не получает уведомления при создании основной поверхности в Windows 2000 и более поздних версиях. Однако если драйвер поддерживает guid GUID_NTPrivateDriverCaps в вызове DdGetDriverInfo и флаг DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION установлен в элементе dwPrivateCapsструктуры DD_NTPRIVATEDRIVERCAPS , драйвер получает уведомление.

Шаг должен возвращаться в элементе lPitch структур DD_SURFACE_GLOBAL и DDSURFACEDESC . Для линейной памяти драйвер должен задать dwBlockSizeX размер области памяти в байтах, а параметру dwBlockSizeY — значение 1. Оба являются членами DD_SURFACE_GLOBAL структуры.

Этот вызов имеет тот же прототип, что и DdCreateSurface. Обратный вызов CreateD3DBuffer используется, если в элементе ddsCapsструктуры DD_SURFACE_LOCAL задан флаг DDSCAPS_EXECUTEBUFFER. Флагами создания буфера являются DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER и DDSCAPS2_COMMANDBUFFER.

Драйвер определяет тип запрашиваемого буфера, проверяя член ddsCaps структуры DD_SURFACE_LOCAL на наличие следующих флагов:

Flag Значение
DDSCAPS2_COMMANDBUFFER Драйвер должен выделить буфер команд.
DDSCAPS2_VERTEXBUFFER Драйвер должен выделить явный буфер вершин.
 
Примечание Если ни тот из флагов не задан, драйвер должен выделить неявный буфер вершин. Неявные буферы вершин не должны помещаться в видеопамяти, так как они должны быть считываются и записываются. В видеопамяти можно безопасно поместить только явные буферы вершин с флагом DDSCAPS_WRITEONLY.
 
Драйвер может выделить буферную память или запросить управление памятью в Microsoft DirectDraw. Если драйвер выполняет выделение, он должен записать допустимый указатель на память в элементе fpVidMemструктуры DD_SURFACE_GLOBAL .

Кроме того, драйвер может запросить выделение буфера в DirectDraw, возвращая одно из следующих значений в fpVidMem:

Значение Значение
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw должен выделять буферную память из памяти вне экрана.
DDHAL_PLEASEALLOC_USERMEM DirectDraw должен выделять буферную память из памяти пользователя. Драйвер также должен возвращать размер (в байтах) области памяти в dwUserMemSize.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть ddrawint.h (включая Winddi.h)

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

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo