Freigeben über


DD_SURFACE_GLOBAL-Struktur (ddrawint.h)

Die DD_SURFACE_GLOBAL-Struktur enthält globale Oberflächendaten, die von mehreren Oberflächen gemeinsam genutzt werden können.

Syntax

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;

Member

dwBlockSizeY

Gibt den Speicherort an, an dem der Treiber in Scanzeilen die Höhe des Offscreen-Speicherblocks zurückgibt, den Microsoft DirectDraw zuordnen soll. Der Treiber sollte diesen Wert festlegen, wenn er DDHAL_PLEASEALLOC_BLOCKSIZE im fpVidMem-Member zurückgibt.

lSlicePitch

Slice-Tonhöhe für Volumentexturen.

lpVidMemHeap

Verweist auf eine VIDEOMEMORY-Struktur , aus der der Heapanzeigespeicher zugeordnet wurde.

dwBlockSizeX

Gibt den Speicherort an, an dem der Treiber die Größe des Offscreen-Speicherblocks in Byte zurückgibt, den DirectDraw zuordnen soll. Der Treiber sollte diesen Wert festlegen, wenn er DDHAL_PLEASEALLOC_BLOCKSIZE im fpVidMem-Member zurückgibt.

dwUserMemSize

Gibt den Speicherort an, an dem der Treiber die Größe des Speicherblocks in Byte zurückgibt, den DirectDraw im Systemspeicher im Benutzermodus zuordnen soll. Der Treiber sollte diesen Wert festlegen, wenn er DDHAL_PLEASEALLOC_USERMEM im fpVidMem-Element zurückgibt.

fpVidMem

Wenn der Treiber den Speicherblock zuordnet, sollte er den Offset in den Anzeigespeicher in diesem Member zurückgeben. Wenn der Treiber DirectDraw zur Speicherbelegung anfordert, kann er stattdessen einen der folgenden Werte in diesem Member aus seiner DdCreateSurface-Routine zurückgeben:

Wert Bedeutung
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw sollte einen Speicherblock der Größe dwBlockSizeX und dwBlockSizeY im Offscreenspeicher zuordnen.
DDHAL_PLEASEALLOC_USERMEM DirectDraw sollte einen Speicherblock der Größe dwUserMemSize im Benutzermodusspeicher zuordnen.

lPitch

Gibt die Tonhöhe der Oberfläche an; d. h. der Abstand in Bytes zum Anfang der nächsten Zeile. Dies wird auch als Schritt der Oberfläche bezeichnet.

dwLinearSize

Gibt die lineare Größe einer nicht-ectangularen Oberfläche in Byte an.

yHint

Gibt die y-Koordinate der Oberfläche an. Dieser Member ist eine kartesische 2D-Koordinate, die im Geräteraum angegeben ist.

xHint

Gibt die x-Koordinate der Oberfläche an. Dieser Member ist eine kartesische 2D-Koordinate, die im Geräteraum angegeben ist.

wHeight

Gibt die Höhe der Oberfläche in Pixel an.

wWidth

Gibt die Breite der Oberfläche in Pixel an.

dwReserved1

Reserviert für die Verwendung durch den Anzeigetreiber.

ddpfSurface

Verweist auf die DDPIXELFORMAT-Struktur , die das Pixelformat der Oberfläche beschreibt.

fpHeapOffset

Zeigt auf den Unformatierten Offset im Quellheap.

hCreatorProcess

Reserviert für die Systemverwendung und sollte vom Treiber ignoriert werden.

Hinweise

Ein Vertexpuffer, der von CreateD3DBuffer erstellt wird, enthält eine Liste von Scheitelpunkten, die vom D3dDrawPrimitives2-Rückruf zum Rendern von Grundtypen verwendet werden. Microsoft Windows stellt Vertexpuffer als DirectDraw-Oberflächen dar, wodurch eine Verbindung zwischen Vertexpuffern und der DD_SURFACE_GLOBAL-Struktur hergestellt wird.

Wenn ein DirectX-Treiber mit einem Vertexpuffer arbeitet, ist es wichtig, dass er die Größe dieses Puffers richtig bestimmen kann. DirectDraw übergibt die lineare Puffergröße an den Treiber im lPitch-Element dieser Struktur. Unter Windows 2000 und höheren Versionen, aber nicht unter Windows 98/Me, wird das wWidth-Element dieser Struktur auf den gleichen Wert festgelegt. Beachten Sie, dass beide Strukturmember als schreibgeschützt betrachtet werden sollten. Der Wert, den DirectDraw in diesen Membern platziert, stellt die minimale Vertexpuffergröße dar. Sollte ein größerer Puffer erforderlich sein (z. B. zur Optimierung), kann ein Treiberschreiber einen Puffer erstellen, der größer als diese Größe ist. Auf keinen Fall sollte der Treiber die größere Puffergröße an DirectDraw melden.

Anforderungen

   
Kopfzeile ddrawint.h (einschließlich Winddi.h)

Weitere Informationen

CreateD3DBuffer

D3dDrawPrimitives2

DDPIXELFORMAT

DdCreateSurface

VIDEOMEMORY