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


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

Структура DD_SURFACE_GLOBAL содержит глобальные данные, связанные с поверхностью, которые можно совместно использовать между несколькими поверхностями.

Синтаксис

typedef struct _DD_SURFACE_GLOBAL {
  union {
    DWORD dwBlockSizeY;
    LONG  lSlicePitch;
  };
  union {
    LPVIDEOMEMORY lpVidMemHeap;
    DWORD         dwBlockSizeX;
    DWORD         dwUserMemSize;
  };
  FLATPTR       fpVidMem;
  union {
    LONG  lPitch;
    DWORD dwLinearSize;
  };
  LONG          yHint;
  LONG          xHint;
  DWORD         wHeight;
  DWORD         wWidth;
  ULONG_PTR     dwReserved1;
  DDPIXELFORMAT ddpfSurface;
  FLATPTR       fpHeapOffset;
  HANDLE        hCreatorProcess;
} *PDD_SURFACE_GLOBAL, DD_SURFACE_GLOBAL;

Члены

dwBlockSizeY

Указывает расположение, в котором драйвер возвращает высоту (в строках сканирования) блока памяти вне экрана, который должен выделить Microsoft DirectDraw. Драйвер должен задать это значение при возвращении DDHAL_PLEASEALLOC_BLOCKSIZE в члене fpVidMem .

lSlicePitch

Шаг среза для текстур громкости.

lpVidMemHeap

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

dwBlockSizeX

Указывает расположение, в котором драйвер возвращает размер в байтах ширины блока памяти вне экрана, который должен выделить DirectDraw. Драйвер должен задать это значение при возвращении DDHAL_PLEASEALLOC_BLOCKSIZE в члене fpVidMem .

dwUserMemSize

Указывает расположение, в котором драйвер возвращает размер блока памяти в байтах, который DirectDraw должен выделить в системной памяти в пользовательском режиме. Драйвер должен задать это значение при возвращении DDHAL_PLEASEALLOC_USERMEM в члене fpVidMem .

fpVidMem

Если драйвер выделяет блок памяти, он должен вернуть смещение в память дисплея в этом элементе. Если драйвер запрашивает у DirectDraw выделение памяти, он может вернуть одно из следующих значений в этом элементе из своей подпрограммы DdCreateSurface :

Значение Значение
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw должен выделить блок памяти размера dwBlockSizeX и dwBlockSizeY в памяти вне экрана.
DDHAL_PLEASEALLOC_USERMEM DirectDraw должен выделить блок памяти размера dwUserMemSize в памяти пользовательского режима.

lPitch

Задает шаг поверхности; то есть расстояние в байтах до начала следующей строки. Это также называется шаг поверхности.

dwLinearSize

Задает линейный размер неректулярной поверхности в байтах.

yHint

Задает координату поверхности по оси Y. Этот элемент представляет собой двухадкартовую координату, указанную в пространстве устройства.

xHint

Задает координату по оси X поверхности. Этот элемент представляет собой двухадкартовую координату, указанную в пространстве устройства.

wHeight

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

wWidth

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

dwReserved1

Зарезервировано для использования драйвером дисплея.

ddpfSurface

Указывает на структуру DDPIXELFORMAT , которая описывает формат пикселей поверхности.

fpHeapOffset

Указывает на необработанное смещение в исходной куче.

hCreatorProcess

Зарезервировано для использования системой и должно игнорироваться драйвером.

Комментарии

Буфер вершин, созданный с помощью CreateD3DBuffer, содержит список вершин, используемых обратным вызовом D3dDrawPrimitives2 для отрисовки примитивов. Microsoft Windows представляет буферы вершин как поверхности DirectDraw, тем самым устанавливая связь между буферами вершин и структурой DD_SURFACE_GLOBAL.

Когда драйвер DirectX работает с буфером вершин, важно, чтобы он мог правильно определить размер этого буфера. DirectDraw передает размер линейного буфера драйверу в элементе lPitch этой структуры. В Windows 2000 и более поздних версиях, но не в Windows 98/Me, член wWidth этой структуры имеет то же значение. Обратите внимание, что оба элемента структуры следует рассматривать как доступные только для чтения. Значение, которое DirectDraw помещает в эти элементы, представляет минимальный размер буфера вершин. Если возникает необходимость в большем буфере (например, для оптимизации), модуль записи драйверов может создать буфер, превышающий этот размер. Однако ни при каких обстоятельствах драйвер не должен сообщать о большем размере буфера в DirectDraw.

Требования

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

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

CreateD3DBuffer

D3dDrawPrimitives2

DDPIXELFORMAT

DdCreateSurface

ВИДЕОМЕМОРИЯ