PFND3DDDI_CLEAR Rückruffunktion (d3dumddi.h)

Die Clear-Funktion führt hardwaregestütztes Löschen für das Renderingziel, den Tiefenpuffer oder den Schablonenpuffer aus.

Syntax

PFND3DDDI_CLEAR Pfnd3dddiClear;

HRESULT Pfnd3dddiClear(
  [in] HANDLE hDevice,
       const D3DDDIARG_CLEAR *unnamedParam2,
       UINT unnamedParam3,
       const RECT *unnamedParam4
)
{...}

Parameter

[in] hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in]

Ein Zeiger auf eine D3DDDIARG_CLEAR-Struktur , die die Parameter des hardwaregestützten Clearingvorgangs beschreibt.

unnamedParam3

NumRect [in]

Die Anzahl der Zu löschenden Rechtecke im Array bei pRect . Wenn die Anzahl der Rechtecke auf 0 festgelegt ist, sollte Clear das gesamte Renderziel, den Tiefenpuffer und den Schablonenpuffer löschen. In dieser Situation ist der Inhalt des Arrays bei pRect nicht definiert, und der Treiber sollte nicht versuchen, sie zu lesen.

unnamedParam4

pRect [in]

Ein Array von RECT-Strukturen , die die rechteckigen Bereiche des Puffers angeben, die der Treiber löschen soll.

Rückgabewert

Clear gibt S_OK oder ein entsprechendes Fehlerergebnis zurück, wenn der hardwareunterstützte Clearingvorgang nicht erfolgreich ausgeführt wurde.

Hinweise

Wie der Treiber den Clear-Vorgang ausführt, hängt von der Anzahl der rechteckigen Bereiche ab, die im NumRect-Parameter angegeben sind, und von den Werten, die im Flags-Elementvon D3DDDIARG_CLEAR festgelegt werden. Die werte D3DCLEAR_TARGET, D3DCLEAR_STENCIL und D3DCLEAR_ZBUFFER (definiert in D3d8types.h) geben den Typ des zu löschenden Puffers an. Der D3DCLEAR_COMPUTERECTS-Wert (definiert in D3dhal.h) gibt an, wie der Puffer gelöscht wird. Die folgenden Einstellungen geben an, wie der Treiber den angegebenen Puffertyp löschen soll:

  • Wenn NumRect auf 0 (NumRect== 0) festgelegt ist und D3DCLEAR_COMPUTERECTS nicht in Flags festgelegt ist, löscht der Treiber 0 Pixel (d.a. no-op).
  • Wenn NumRect auf 0 festgelegt ist und D3DCLEAR_COMPUTERECTS in Flags festgelegt ist, löscht der Treiber den gesamten Viewport (nicht die gesamte Oberfläche).
  • Wenn NumRect auf einen Wert größer als 0 (NumRect!= 0) festgelegt ist und D3DCLEAR_COMPUTERECTS in Flags festgelegt ist, klammert der Treiber die rechteckigen Bereiche ab, die pRect für den aktuellen Viewport angibt.
Scherentests wirken sich auch auf die Ausführung des Clear-Vorgangs durch den Treiber aus. Eine Anwendung legt den D3DRS_SCISSORTESTENABLE-Renderzustand in einem Aufruf der IDirect3DDevice9::SetRenderState-Methode fest, um Scissor-Tests zu aktivieren. Weitere Informationen zum Scissor-Test finden Sie unter Scissor-Test. Wenn der D3DRS_SCISSORTESTENABLE Renderzustand festgelegt ist und das D3DCLEAR_COMPUTERECTS-Flag festgelegt ist, muss der Treiber die rechteckigen Bereiche, die pRect angibt, an den rechteckigen Scissor-Bereich ausschneiden.

Wenn NumRect auf einen Wert größer als 0 (NumRect> 0) festgelegt ist und D3DCLEAR_COMPUTERECTS in Flags festgelegt ist, klammert der Treiber die angegebenen rechteckigen Bereiche mit dem aktuellen Viewport und dem Scherenrechteck ab, wenn eine Anwendung zuvor D3DRS_SCISSORTESTENABLE festgelegt hat. Wenn NumRect> 0 und D3DCLEAR_COMPUTERECTS nicht festgelegt sind, bestimmt der Treiber, dass die Direct3D-Runtime die angegebenen rechteckigen Bereiche bereits auf den aktuellen Viewport und auf das Scherenrechteck abgeschnitten hat, wenn eine Anwendung zuvor D3DRS_SCISSORTESTENABLE festgelegt hat.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT