функция обратного вызова 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 | Драйвер должен выделить явный буфер вершин. |
Кроме того, драйвер может запросить выделение буфера в DirectDraw, возвращая одно из следующих значений в fpVidMem:
Значение | Значение |
---|---|
DDHAL_PLEASEALLOC_BLOCKSIZE | DirectDraw должен выделять буферную память из памяти вне экрана. |
DDHAL_PLEASEALLOC_USERMEM | DirectDraw должен выделять буферную память из памяти пользователя. Драйвер также должен возвращать размер (в байтах) области памяти в dwUserMemSize. |
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | ddrawint.h (включая Winddi.h) |