структура 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) |