Freigeben über


D3DHAL_DRAWPRIMITIVES2DATA Struktur (d3dhal.h)

Die D3DHAL_DRAWPRIMITIVES2DATA-Struktur enthält die informationen, die von der D3dDrawPrimitives2 Funktion zum Rendern von Grundtypen benötigt werden.

Syntax

typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
  ULONG_PTR                 dwhContext;
  DWORD                     dwFlags;
  DWORD                     dwVertexType;
  LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
  DWORD                     dwCommandOffset;
  DWORD                     dwCommandLength;
  union {
    LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
    LPVOID                    lpVertices;
  };
  DWORD                     dwVertexOffset;
  DWORD                     dwVertexLength;
  DWORD                     dwReqVertexBufSize;
  DWORD                     dwReqCommandBufSize;
  LPDWORD                   lpdwRStates;
  union {
    DWORD   dwVertexSize;
    HRESULT ddrval;
  };
  DWORD                     dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;

Angehörige

dwhContext

Gibt das Kontexthandle des Direct3D-Geräts an.

dwFlags

Gibt Flags an, die zusätzliche Anweisungen für den Treiber bereitstellen oder Informationen vom Treiber bereitstellen. Dieses Element kann ein bitweiser OR der folgenden Werte sein:

Wert Bedeutung
D3DHALDP2_EXECUTEBUFFER Die Befehls- und Vertexpuffer wurden im Systemspeicher erstellt. Der Treiber sollte das Statusarray aktualisieren, auf das lpdwRStates verweist. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_REQCOMMANDBUFSIZE Der Treiber muss in der Lage sein, den aktuellen Befehlspuffer um mindestens die in dwReqCommandBufSize angegebene Größe zu erhöhen. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_REQVERTEXBUFSIZE Der Treiber muss einen Vertexpuffer mit mindestens der in dwReqCommandBufSize angegebenen Größe zuordnen können. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_SWAPCOMMANDBUFFER Der Treiber kann den Puffer austauschen, auf den lpDDCommands mit einem neuen Befehlspuffer verweist und sofort zurückgegeben wird, wobei der ursprüngliche Puffer asynchron verarbeitet wird, während Direct3D den neuen Befehlspuffer ausfüllt. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_SWAPVERTEXBUFFER Der Treiber kann den Puffer austauschen, auf den lpDDVertex oder lpVertices mit einem neuen Vertexpuffer verweist und sofort zurückgegeben wird, wobei der ursprüngliche Puffer asynchron verarbeitet wird, während Direct3D den neuen Vertexpuffer ausfüllt. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_USERMEMVERTICES Das lpVertices-Element ist gültig, sodass der Treiber die Vertexdaten aus dem vom Benutzer zugewiesenen Speicher abrufen sollte, auf den lpVertices verweist. Dieses Kennzeichen wird nur von Direct3D festgelegt.
D3DHALDP2_VIDMEMCOMMANDBUF Der vom Treiber als Swappuffer zugewiesene Befehlspuffer befindet sich nicht im Systemspeicher. Dieses Flag kann von Treibern festgelegt werden, die multibuffering von Befehlspuffern unterstützen.
D3DHALDP2_VIDMEMVERTEXBUF Der vom Treiber als Swappuffer zugewiesene Vertexpuffer befindet sich nicht im Systemspeicher. Dieses Flag kann von Treibern festgelegt werden, die multibuffering von Vertexpuffern unterstützen.

dwVertexType

Identifiziert die FVF- der Daten im Vertexpuffer; d. h. dwVertexType- gibt an, auf welche Datenfelder pro Vertex im Vertexpuffer vorhanden sind, auf den lpDDVertex oder lpVertices verweist. Dieses Element kann ein bitweiser OR der Werte in der folgenden Tabelle sein. Es wird nur eine der D3DFVF_TEXx Flags festgelegt.

Wert Bedeutung
D3DFVF_DIFFUSE Jeder Scheitelpunkt hat eine diffuse Farbe.
D3DFVF_SPECULAR Jeder Scheitelpunkt weist eine Glanzfarbe auf.
D3DFVF_TEX0 Es werden keine Texturkoordinaten mit den Vertexdaten bereitgestellt.
D3DFVF_TEX1 Jeder Scheitelpunkt verfügt über eine Reihe von Texturkoordinaten.
D3DFVF_TEX2 Jeder Scheitelpunkt verfügt über zwei Sätze von Texturkoordinaten.
D3DFVF_TEX3 Jeder Scheitelpunkt verfügt über drei Sätze von Texturkoordinaten.
D3DFVF_TEX4 Jeder Scheitelpunkt verfügt über vier Sätze von Texturkoordinaten.
D3DFVF_TEX5 Jeder Scheitelpunkt verfügt über fünf Sätze von Texturkoordinaten.
D3DFVF_TEX6 Jeder Scheitelpunkt verfügt über sechs Sätze von Texturkoordinaten.
D3DFVF_TEX7 Jeder Scheitelpunkt verfügt über sieben Sätze von Texturkoordinaten.
D3DFVF_TEX8 Jeder Scheitelpunkt verfügt über acht Sätze von Texturkoordinaten.
D3DFVF_XYZRHW Jeder Scheitelpunkt weist x-, y-, z- und w-Koordinaten auf. Dieses Kennzeichen ist immer festgelegt.

lpDDCommands

dwCommandOffset

dwCommandLength

Gibt die Anzahl der Bytes gültiger Befehlsdaten in der Oberfläche an, die lpDDCommands verweist, um mit dwCommandOffsetzu beginnen.

lpDDVertex

Verweist auf die DD_SURFACE_LOCAL Struktur, die die DirectDraw-Oberfläche identifiziert, die die Vertexdaten enthält, wenn das D3DHALDP2_USERMEMVERTICES Flag nicht in dwFlagsfestgelegt ist. Bildet eine Vereinigung mit lpVertices.

lpVertices

Verweist auf einen Speicherblock im Benutzermodus, der Vertexdaten enthält, wenn das D3DHALDP2_USERMEMVERTICES Flag in dwFlagsfestgelegt ist.

dwVertexOffset

Gibt die Anzahl der Bytes in der Oberfläche an, auf die durch lpDDVertex oder lpVertices verweist, wo die Vertexdaten beginnen.

dwVertexLength

Gibt die Anzahl der Scheitelpunkte an, für die gültige Daten in der Oberfläche vorhanden sind, auf die durch lpDDVertex oder lpVerticesverwiesen wird. Diese gültigen Daten beginnen bei dwVertexOffset.

dwReqVertexBufSize

Gibt die minimale Anzahl von Bytes an, die der Treiber für den Swap-Vertexpuffer zuordnen muss. Dieses Element ist nur gültig, wenn das D3DHALDP2_REQVERTEXBUFSIZE Flag festgelegt ist. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, sollten dieses Element ignorieren.

dwReqCommandBufSize

Gibt die minimale Anzahl von Bytes an, um die der Treiber den Swap command buffer um erhöhen muss. Dieses Element ist nur gültig, wenn das D3DHALDP2_REQCOMMANDBUFSIZE Flag festgelegt ist. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, sollten dieses Element ignorieren.

lpdwRStates

Verweist auf ein Renderstatusarray, das der Treiber aktualisieren soll, wenn er Renderzustandsbefehle aus dem Befehlspuffer analysiert. Der Treiber sollte dieses Array nur aktualisieren, wenn das D3DHALDP2_EXECUTEBUFFER Flag in dwFlagsfestgelegt ist. Der Treiber sollte die D3DRENDERSTATETYPE aufgezählten Typen verwenden, um das entsprechende Element des Renderzustandsarrays zu aktualisieren.

dwVertexSize

Gibt die Größe der einzelnen Scheitelpunkte in Byte an. Dieses Mitglied bildet eine Vereinigung mit ddrval.

ddrval

Gibt den Speicherort an, an dem der Treiber den Rückgabewert von D3dDrawPrimitives2schreibt. D3D_OK weist auf Erfolg hin. Andernfalls sollte der Treiber den entsprechenden D3DERR_Xxx Fehlercode zurückgeben. Weitere Informationen finden Sie unter Rückgabecodes für Direct3D-Treiberrückrufe.

Wert Bedeutung
D3D_OK Der Vorgang wurde erfolgreich abgeschlossen.
D3DERR_COMMAND_UNPARSED Der Treiber erfordert die Direct3D-Laufzeit, um den Ausführungspuffer zu analysieren.

dwErrorOffset

Jeder D3DHAL_DP2RESPONSEQUERY folgt den folgenden Daten im Zusammenhang mit der Abfrage:

  • BOOL für D3DQUERYTYPE_EVENT
  • DWORD für D3DQUERYTYPE_OCCLUSION
  • D3DDEVINFO_VCACHE Struktur für D3DQUERYTYPE_VCACHE

Bemerkungen

Beachten Sie, dass das dwVertexOffset Element Werte in Byte angibt; das dwVertexLength Member Werte in Scheitelpunkten angibt.

Um die gültigen Daten in Byte zu berechnen, die in der Oberfläche bei lpDDVertex oder lpVerticesvorhanden sind, multiplizieren Sie den Wert in dwVertexLength mit dem Wert in dwVertexSize.

Anforderungen

Anforderung Wert
Header- d3dhal.h (einschließlich D3dhal.h)

Siehe auch

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL