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) |