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 应在屏幕外内存中分配大小 为 dwBlockSizeXdwBlockSizeY 的内存块。
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)

另请参阅

CreateD3DBuffer

D3dDrawPrimitives2

DDPIXELFORMAT

DdCreateSurface

VIDEOMEMORY