Freigeben über


D3DHAL_DP2DRAWRECTPATCH Struktur (d3dhal.h)

Nur DirectX 8.0 und höhere Versionen.

D3DHAL_DRAWRECTPATCH vom D3dDrawPrimitives2-Rückruf aus dem Befehlspuffer analysiert wird, wenn der bCommand-Member der D3DHAL_DP2COMMAND-Struktur auf D3DDP2OP_DRAWRECTPATCH festgelegt ist und zum Rendern eines rechteckigen Patches verwendet wird.

Syntax

typedef struct _D3DHAL_DP2DRAWRECTPATCH {
  DWORD Handle;
  DWORD Flags;
} D3DHAL_DP2DRAWRECTPATCH;

Member

Handle

Gibt den Handle an, der der Oberfläche zugeordnet ist.

Flags

Gibt an, welche zusätzlichen Informationen der D3DHAL_DP2DRAWRECTPATCH Datenstruktur im DP2-Stream folgen, falls vorhanden.

Hinweise

Das Handle-Element wird verwendet, um die Oberfläche einem Griff zuzuordnen, sodass beim nächsten Zeichnen dieser Oberfläche die D3DRECTPATCH_INFO Datenstruktur für diesen Patch nicht neu angegeben werden muss. Dies ermöglicht es dem Treiber, Differenzkoeffizienten und/oder andere Informationen vorzurechnen und zwischenzuspeichern, sodass nachfolgende D3DDP2OP_DRAWRECTPATCH Token mit demselben Handle effizienter ausgeführt werden können. D3DRECTPATCH_INFO wird in der neuesten DirectX SDK-Dokumentation beschrieben.

Der tatsächliche Wert von Handle wird von der Anwendung bestimmt und steht nicht unter Laufzeitsteuerung. Daher sollte der Treiber bereit sein, jeden Wert zu bewältigen, der durch ein DWORD angegeben werden kann. Der spezielle Handle-Wert 0 bedeutet, dass der Patch dynamisch ist und keine Vorberechnungs- oder Zwischenspeicherungsinformationen für diesen Patch vorhanden sind. Ein Unterzerowert für Handle bedeutet, dass der Patch statisch (oder mit niedriger Häufigkeit aktualisiert) ist und eine Vorberechnung und Zwischenspeicherung möglich sind.

Das Flags-Element wird verwendet, um zu kommunizieren, welche zusätzlichen Informationen der D3DHAL_DP2DRAWRECTPATCH Datenstruktur im DP2-Stream folgen, falls vorhanden. Wenn RTPATCHFLAG_HASSEGS angegeben wird, folgen vier Gleitkommawerte im DP2-Stream D3DHAL_DP2DRAWRECTPATCH. Diese Floats geben die Segmentanzahl für jeden der vier Kanten des rechteckigen Patches an und überschreiben den Wert des Renderzustands D3DRS_PATCHSEGMENTS. Wenn RTPATCHFLAG_HASINFO angegeben wird, folgt eine D3DRECTPATCH_INFO Datenstruktur im DP2-Stream. Wenn beide Flags angegeben werden, folgen die vier Floats, die die Segmentanzahl angeben, D3DHAL_DP2DRAWRECTPATCH und die D3DRECTPATCH_INFO Struktur den Gleitkommawerten.

Es gibt vier Szenarien, die ein Treiber bei der Verarbeitung D3DDP2OP_DRAWRECTPATCH verarbeiten muss.

Wenn Handle null ist, ist der Patch dynamisch, und es sollte keine Vorberechnung oder Zwischenspeicherung durchgeführt werden. In diesem Fall folgt ein D3DRECTPATCH_INFO D3DHAL_DP2DRAWRECTPATCH im DP2-Stream (und das Flag RTPATCHFLAG_HASINFO wird festgelegt, um das Vorhandensein der D3DRECTPATCH_INFO Datenstruktur anzugeben). Optional können RTPATCHFLAG_HASSEGS auch so festgelegt werden, dass die Segmentinformationen vorhanden sind. Wenn dies jedoch weggelassen wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist und der Handle-Wert nicht von einem früheren D3DDP2OP_DRAWRECTPATCH angegeben wurde, gibt dies an, dass ein neuer zwischenspeicherbarer Patch gezeichnet wird. Der Treiber sollte Arbeitsspeicher zuweisen, um zwischengespeicherte Daten zu speichern, und diese Daten der Patchhandle-Tabelle hinzufügen. Da dieser Patch noch nicht angezeigt wurde, sollte das RTPATCHFLAG_HASINFO-Flag festgelegt werden, und eine D3DRECTPATCH_INFO Struktur sollte im DP2-Stream folgen. Die Runtime garantiert dies jedoch nicht, und der Treiber sollte das Vorhandensein der Patchinformationen überprüfen, indem er das Flag testet. Wenn keine Informationen angegeben werden, sollte dieses Token ignoriert werden, und es sollte kein Handle in der Patchhandletabelle des Treibers zugewiesen werden. Optional können RTPATCHFLAG_HASSEGS auch so festgelegt werden, dass die Segmentinformationen vorhanden sind. Wenn dies jedoch weggelassen wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist, der Handle-Wert von einem früheren D3DDP2OP_DRAWRECTPATCH Token angegeben wurde und das Feld Flags RTPATCHFLAG_HASINFO enthält, wird die Definition für den Patch aktualisiert. Im DP2-Stream folgt eine D3DRECTPATCH_INFO Datenstruktur, die der Treiber verwenden sollte, um Patchinformationen neu zu berechnen und zwischenzuspeichern. Optional können RTPATCHFLAG_HASSEGS auch so festgelegt werden, dass die Segmentinformationen vorhanden sind. Wenn dies jedoch weggelassen wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist, der Handle-Wert von einem früheren D3DDP2OP_DRAWRECTPATCH Token angegeben wurde und das Feld Flags keine RTPATCHFLAG_HASINFO enthält, sollten die zwischengespeicherten Informationen zum Zeichnen des Patches verwendet werden. In diesem Fall werden die aktuellen Scheitelpunkte ignoriert. Stattdessen sollten die zwischengespeicherten Informationen verwendet werden. Allerdings ist es in diesem Fall weiterhin möglich, dass eine neue Segmentinformation angegeben wird. Daher sollte der Treiber nach dem Flag suchen, RTPATCHFLAG_HASSEGS und die angegebenen Segmentinformationen verarbeiten, auch wenn ein zwischengespeicherter Patch verwendet wird.

Der Treiber erhält eine Benachrichtigung, dass zwischengespeicherte Patchinformationen über den Renderzustand D3DRS_DELETERTPATCH freigegeben werden. Der Wert dieses Renderzustands ist der zu löschende Patch.

Anforderungen

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

Weitere Informationen

D3DDP2OP_DRAWRECTPATCH

D3DHAL_DP2COMMAND

D3DHAL_DP2DRAWTRIPATCH

D3DRS_DELETERTPATCH

D3dDrawPrimitives2