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 应分配的屏幕外内存块的高度(扫描行)的位置。 驱动程序在 fpVidMem 成员中返回DDHAL_PLEASEALLOC_BLOCKSIZE时,应设置此值。
lSlicePitch
音量纹理的切片间距。
lpVidMemHeap
指向从中分配堆显示内存的 VIDEOMEMORY 结构。
dwBlockSizeX
指定驱动程序返回 DirectDraw 应分配的屏幕外内存块宽度的大小(以字节为单位)的位置。 驱动程序在 fpVidMem 成员中返回DDHAL_PLEASEALLOC_BLOCKSIZE时,应设置此值。
dwUserMemSize
指定驱动程序返回 DirectDraw 应在用户模式系统内存中分配的内存块的大小(以字节为单位)的位置。 驱动程序在 fpVidMem 成员中返回DDHAL_PLEASEALLOC_USERMEM时应设置此值。
fpVidMem
如果驱动程序分配内存块,则应将偏移量返回到此成员中的显示内存中。 如果驱动程序请求 DirectDraw 执行内存分配,它可以从其 DdCreateSurface 例程返回此成员中的以下值之一:
值 | 含义 |
---|---|
DDHAL_PLEASEALLOC_BLOCKSIZE | DirectDraw 应在屏幕外内存中分配大小 为 dwBlockSizeX 和 dwBlockSizeY 的内存块。 |
DDHAL_PLEASEALLOC_USERMEM | DirectDraw 应在用户模式内存中分配大小 为 dwUserMemSize 的内存块。 |
lPitch
指定图面的间距;即到下一行开头的距离(以字节为单位)。 这也称为表面的步幅。
dwLinearSize
指定非矩形表面的线性大小(以字节为单位)。
yHint
指定图面的 y 坐标。 此成员是在设备空间中指定的 2D 笛卡尔坐标。
xHint
指定图面的 x 坐标。 此成员是在设备空间中指定的 2D 笛卡尔坐标。
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) |