Partager via


PFND3DDDI_CLEAR fonction de rappel (d3dumddi.h)

La fonction Clear effectue l’effacement assisté par le matériel sur la cible de rendu, la mémoire tampon de profondeur ou la mémoire tampon de gabarit.

Syntaxe

PFND3DDDI_CLEAR Pfnd3dddiClear;

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

Paramètres

[in] hDevice

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure de D3DDDIARG_CLEAR qui décrit les paramètres de l’opération de suppression assistée par le matériel.

unnamedParam3

NumRect [in]

Nombre de rectangles dans le tableau à effacer à pRect . Si le nombre de rectangles est défini sur zéro, Clear doit effacer l’intégralité de la cible de rendu, de la mémoire tampon de profondeur et de la mémoire tampon de gabarit. Dans ce cas, le contenu du tableau à pRect n’est pas défini et le pilote ne doit pas tenter de les lire.

unnamedParam4

pRect [in]

Tableau de structures RECT qui indiquent les zones rectangulaires de la mémoire tampon que le pilote doit effacer.

Valeur retournée

Clear retourne S_OK ou un résultat d’erreur approprié si l’opération d’effacement assistée par le matériel n’est pas effectuée avec succès.

Remarques

La façon dont le pilote effectue l’opération d’effacement dépend du nombre de zones rectangulaires spécifiées dans le paramètre NumRect et des valeurs définies dans le membre Flags de D3DDDIARG_CLEAR. Les valeurs D3DCLEAR_TARGET, D3DCLEAR_STENCIL et D3DCLEAR_ZBUFFER (définies dans D3d8types.h) indiquent le type de mémoire tampon à effacer. La valeur D3DCLEAR_COMPUTERECTS (définie dans D3dhal.h) indique comment effacer la mémoire tampon. Les paramètres suivants indiquent comment le pilote doit effacer le type de mémoire tampon spécifié :

  • Si NumRect a la valeur 0 (NumRect== 0) et si D3DCLEAR_COMPUTERECTS n’est pas défini dans Indicateurs, le pilote efface 0 pixels (c’est-à-dire une opération sans opération).
  • Si NumRect a la valeur 0 et que D3DCLEAR_COMPUTERECTS est défini dans Indicateurs, le pilote efface la fenêtre d’affichage entière (et non la surface entière).
  • Si NumRect a une valeur supérieure à 0 (NumRect != 0) et que D3DCLEAR_COMPUTERECTS est défini dans Indicateurs, le pilote clipse les zones rectangulaires spécifiées par pRect par rapport à la fenêtre d’affichage actuelle.
Le test du ciseau affecte également la façon dont le pilote effectue l’opération d’effacement. Une application définit l’état de rendu D3DRS_SCISSORTESTENABLE dans un appel à la méthode IDirect3DDevice9 ::SetRenderState pour activer le test des ciseaux. Pour plus d’informations sur le test de ciseaux, consultez Scissor Test. Si l’état de rendu D3DRS_SCISSORTESTENABLE est défini et que l’indicateur D3DCLEAR_COMPUTERECTS est défini, le pilote doit couper les zones rectangulaires spécifiées par pRect dans la zone rectangulaire en ciseaux.

Si NumRect est défini sur une valeur supérieure à 0 (NumRect> 0) et si D3DCLEAR_COMPUTERECTS est défini dans Indicateurs, le pilote attache les zones rectangulaires spécifiées à la fenêtre d’affichage actuelle et au rectangle de ciseaux si une application a précédemment défini D3DRS_SCISSORTESTENABLE. Si NumRect> 0 et D3DCLEAR_COMPUTERECTS ne sont pas définis, le pilote détermine que le runtime Direct3D a déjà coupé les zones rectangulaires spécifiées dans la fenêtre d’affichage actuelle, et dans le rectangle de ciseaux si une application a précédemment défini D3DRS_SCISSORTESTENABLE.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT