Partager via


PFND3D11DDI_SETRENDERTARGETS fonction de rappel (d3d10umddi.h)

La fonction SetRenderTargets(D3D11) définit les surfaces cibles de rendu.

Syntaxe

PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;

void Pfnd3d11ddiSetrendertargets(
  [in] D3D10DDI_HDEVICE unnamedParam1,
  [in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
  [in] UINT NumRTVs,
  [in] UINT ClearSlots,
  [in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
  [in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
  [in] const UINT *unnamedParam7,
       UINT UAVStartSlot,
  [in] UINT NumUAVs,
  [in] UINT UAVRangeStart,
  [in] UINT UAVRangeSize
)
{...}

Paramètres

[in] unnamedParam1

hDevice : handle du périphérique d’affichage (contexte graphique).

[in] unnamedParam2

phRenderTargetView : tableau de handles vers les objets de vue cible de rendu (RTV) à définir. Notez que certaines valeurs de handle peuvent être NULL.

[in] NumRTVs

Nombre d’éléments dans le tableau fourni dans phRenderTargetView pour les rtV à définir.

[in] ClearSlots

Nombre d’objets RTV à dissocier ; autrement dit, ces objets d’affichage cible qui étaient précédemment liés, mais qui n’ont plus besoin de l’être.

[in] unnamedParam5

hDepthStencilView : handle de la mémoire tampon de gabarit de profondeur à définir.

[in] unnamedParam6

phUnorderedAccessView : tableau de handles vers les objets de vue d’accès non ordonné (UAV) à définir.

[in] unnamedParam7

pUAVInitialCounts : tableau de décalages de mémoire tampon d’ajout et de consommation. Ce paramètre s’applique uniquement aux UAV du tableau phUnorderedAccessView qui ont été créés avec D3D11_DDI_BUFFER_UAV_FLAG_APPEND ou D3D11_DDI_BUFFER_UAV_FLAG_COUNTER défini dans le membre Flags de la structure D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW lors de la création de l’UAV ; sinon, elle est ignorée. Si un élément de ce tableau est défini sur -1, le décalage actuel de cette mémoire tampon d’ajout et de consommation doit être conservé. Toute autre valeur oblige le pilote à définir le compteur masqué pour cette mémoire tampon d’ajout et de consommation de l’UAV.

UAVStartSlot

Index du premier UAV à lier. UAVStartSlot doit être au moins aussi grand que le paramètre NumRTVs .

Notes

Il n’existe qu’un seul ensemble partagé de points de liaison pour les VTV et les UAV. Les VT sont liés en premier, suivis des UAV.

[in] NumUAVs

Nombre d’UAV à lier.

[in] UAVRangeStart

Premier UAV dans l’ensemble de tous les UAV mis à jour (qui comprend les liaisons NULL ).

[in] UAVRangeSize

Nombre d’UAV dans l’ensemble de tous les UAV mis à jour (qui comprend les liaisons NULL ).

Valeur de retour

None

Remarques

Les descripteurs de ressources tels que les VT et les UAV doivent être liés (placés dans des emplacements d’entrée) avant que les nuanceurs puissent y accéder en lecture ou en écriture.

L’image suivante montre un exemple avec cinq ressources.

Exemple RTV et UAV.

Dans l’exemple ci-dessus :

  • NumRTVs = 2
  • UAVStartSlot = 2
  • NumUAVs = 3

NumUAVs et UAVStartSlot spécifient quelle plage dans le tableau uaVs contient des modifications par rapport à l’état précédemment lié. Notez que les points de la plage peuvent être inchangés.

Les paramètres UAVRangeStart et UAVRangeSize sont une commodité qui révèle l’étendue de ce qui a réellement changé étant donné que le DDI Direct3D lie toujours tout (y compris ce qui n’a pas changé). Le runtime D3D11 les formule pour le compte de l’application en tant qu’informations supplémentaires pour les enregistreurs de pilotes comme indicateurs d’optimisation possible. En règle générale, le runtime D3D11 appelle cette fonction avec les valeurs UAVRangeStart et UAVRangeSize pour indiquer la plage entière. En utilisant l’exemple ci-dessus :

  • Pour choisir la plage entière (aucune modification n’est censée se produire), UAVRangeStart = 2 et UAVRangeSize = 3.
  • Pour indiquer que seul le premier UAV a peut-être changé, UAVRangeStart = 2 et UAVRangeSize = 1.

Le pilote peut utiliser la fonction de rappel pfnSetErrorCb pour définir un code d’erreur.

Le pilote ne doit rencontrer aucune erreur, à l’exception de D3DDDIERR_DEVICEREMOVED. Par conséquent, si le pilote réussit une erreur, à l’exception de D3DDDIERR_DEVICEREMOVED, dans un appel à la fonction pfnSetErrorCb , le runtime Microsoft Direct3D détermine que l’erreur est critique. Même si l’appareil a été supprimé, le pilote n’est pas tenu de retourner D3DDDIERR_DEVICEREMOVED ; toutefois, si la suppression de l’appareil a interférer avec le fonctionnement de SetRenderTargets (ce qui ne doit généralement pas se produire), le pilote peut retourner D3DDDIERR_DEVICEREMOVED.

Configuration requise

Condition requise Valeur
Client minimal pris en charge SetRenderTargets(D3D11) est pris en charge à partir du système d’exploitation Windows 7.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3d10umddi.h (include D3d10umddi.h)

Voir aussi

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb