共用方式為


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 應該在 offscreen 記憶體中配置大小 為 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