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


структура DD_D3DBUFCALLBACKS (ddrawint.h)

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

Синтаксис

typedef struct _DD_D3DBUFCALLBACKS {
  DWORD                     dwSize;
  DWORD                     dwFlags;
  PDD_CANCREATESURFACE      CanCreateD3DBuffer;
  PDD_CREATESURFACE         CreateD3DBuffer;
  PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer;
  PDD_SURFCB_LOCK           LockD3DBuffer;
  PDD_SURFCB_UNLOCK         UnlockD3DBuffer;
} DD_D3DBUFCALLBACKS, *PDD_D3DBUFCALLBACKS;

Члены

dwSize

Задает размер этой структуры DD_D3DBUFCALLBACKS в байтах.

dwFlags

Зарезервировано.

CanCreateD3DBuffer

Указывает на обратный вызов CanCreateD3DBuffer драйвера.

CreateD3DBuffer

Указывает на обратный вызов CreateD3DBuffer драйвера.

DestroyD3DBuffer

Указывает на обратный вызов DestroyD3DBuffer драйвера.

LockD3DBuffer

Указывает на обратный вызов lockD3DBuffer драйвера.

UnlockD3DBuffer

Указывает на обратный вызов UnlockD3DBuffer драйвера.

Комментарии

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

Драйвер также должен поддерживать функции обратного вызова, указанные в структуре DD_D3DBUFCALLBACKS. Эти обратные вызовы XxxD3DBuffer аналогичны обратному вызову DdXxxSurface с аналогичным именем; Они имеют одинаковые прототипы и вызываются с теми же входными параметрами. Эти новые обратные вызовы вызываются только в том случае, если в крышках surface задан флаг DDSCAPS_EXECUTEBUFFER. Флаги создания буфера: DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER и DDSCAPS2_COMMANDBUFFER.

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

  • DDSCAPS_VERTEXBUFFER

    Указывает, что драйвер должен выделить явный буфер вершин.

  • DDSCAPS_COMMANDBUFFER

    Указывает, что драйвер должен выделить буфер команд.

  • Отсутствие обоих этих флагов

    Указывает, что драйвер должен выделить неявный буфер вершин.

Неявные буферы вершин не должны размещаться в видеопамяти, так как они должны выполнять чтение и запись. В видеопамяти можно безопасно поместить только явные буферы вершин с установленным флагом DDSCAPS_WRITEONLY.

Требования

   
Верхняя часть ddrawint.h (включая Winddi.h)

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

CanCreateD3DBuffer

CreateD3DBuffer

DD_HALINFO

DD_SURFACE_LOCAL

DestroyD3DBuffer

LockD3DBuffer

UnlockD3DBuffer