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