Partager via


ID3D11DeviceContext ::OMSetRenderTargetsAndUnorderedAccessViews, méthode (d3d11.h)

Lie les ressources à l’étape de fusion-sortie.

Syntaxe

void OMSetRenderTargetsAndUnorderedAccessViews(
  [in]           UINT                      NumRTVs,
  [in, optional] ID3D11RenderTargetView    * const *ppRenderTargetViews,
  [in, optional] ID3D11DepthStencilView    *pDepthStencilView,
  [in]           UINT                      UAVStartSlot,
  [in]           UINT                      NumUAVs,
  [in, optional] ID3D11UnorderedAccessView * const *ppUnorderedAccessViews,
  [in, optional] const UINT                *pUAVInitialCounts
);

Paramètres

[in] NumRTVs

Type : UINT

Nombre de cibles de rendu à lier (plages comprises entre 0 et D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Si ce paramètre n’est pas nul, le nombre d’entrées dans le tableau sur lequel les points ppRenderTargetViews doit être égal au nombre dans ce paramètre. Si vous définissez numRTVs sur D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), cette méthode ne modifie pas les vues cibles de rendu actuellement liées et ne modifie pas non plus la vue de gabarit de profondeur (DSV).

[in, optional] ppRenderTargetViews

Type : ID3D11RenderTargetView*

Pointeur vers un tableau de s ID3D11RenderTargetViewqui représentent les cibles de rendu à lier à l’appareil. Si ce paramètre a la valeur NULL et que NumRTVs a la valeur 0, aucune cible de rendu n’est liée.

[in, optional] pDepthStencilView

Type : ID3D11DepthStencilView*

Pointeur vers un ID3D11DepthStencilView qui représente la vue de gabarit de profondeur à lier à l’appareil. Si ce paramètre a la valeur NULL, la vue de gabarit de profondeur n’est pas liée.

[in] UAVStartSlot

Type : UINT

Indexez dans un tableau de base zéro pour commencer à définir des vues d’accès non ordonnés (plages de 0 à D3D11_PS_CS_UAV_REGISTER_COUNT - 1).

Pour le runtime Direct3D 11.1, disponible à partir de Windows 8, cette valeur peut être comprise entre 0 et D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT est défini comme 64.

Pour les nuanceurs de pixels, UAVStartSlot doit être égal au nombre de vues cibles de rendu liées.

[in] NumUAVs

Type : UINT

Nombre de vues d’accès non ordonné (UAV) dans ppUnorderedAccessViews. Si vous définissez NumUAVs sur D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), cette méthode ne modifie pas les vues d’accès non ordonné actuellement liées.

Pour le runtime Direct3D 11.1, disponible à partir de Windows 8, cette valeur peut varier de 0 à D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

[in, optional] ppUnorderedAccessViews

Type : ID3D11UnorderedAccessView*

Pointeur vers un tableau de s ID3D11UnorderedAccessViewqui représentent les vues d’accès non triées à lier à l’appareil. Si ce paramètre a la valeur NULL et que NumUAVs a la valeur 0, aucune vue d’accès non ordonné n’est liée.

[in, optional] pUAVInitialCounts

Type : const UINT*

Tableau de décalages de mémoire tampon d’ajout et de consommation. La valeur -1 indique de conserver le décalage actuel. Toutes les autres valeurs définissent le compteur masqué pour cet UAV pouvant être ajouté et consommable. pUAVInitialCounts s’applique uniquement aux UAV qui ont été créés avec D3D11_BUFFER_UAV_FLAG_APPEND ou D3D11_BUFFER_UAV_FLAG_COUNTER spécifié lors de la création de l’UAV ; sinon, l’argument est ignoré.

Valeur de retour

None

Remarques

Pour les nuanceurs de pixels, les cibles de rendu et les vues d’accès non ordonné partagent les mêmes emplacements de ressources lors de l’écriture. Cela signifie que les UAV doivent recevoir un décalage afin qu’ils soient placés dans les emplacements après les vues cibles de rendu liées.

Note Les rtv, les DSV et les UAV ne peuvent pas être définis indépendamment ; ils doivent tous être définis en même temps.
 
Deux rtv sont en conflit s’ils partagent une sous-ressource (et partagent donc la même ressource).

Deux UAV sont en conflit s’ils partagent une sous-ressource (et partagent donc la même ressource).

Un RTV est en conflit avec un UAV s’il partage une sous-ressource ou partage un point de liaison.

OMSetRenderTargetsAndUnorderedAccessViews fonctionne correctement dans les situations suivantes :

  1. NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL et NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    Les conditions suivantes doivent avoir la valeur true pour que OMSetRenderTargetsAndUnorderedAccessViews réussisse et que le runtime transmette les informations de liaison au pilote :

    • NumRTVs<= 8
    • UAVStartSlot>= NumRTVs
    • UAVStartSlot + NumUAV<= 8
    • Il ne doit y avoir aucun conflit dans l’ensemble de tous les ppRenderTargetViews et ppUnorderedAccessViews.
    • ppDepthStencilView doit correspondre aux vues cibles de rendu. Pour plus d’informations sur les vues de ressources, consultez Présentation d’une ressource dans Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews effectue les tâches suivantes :
    • Dissocie toutes les ressources en conflit actuellement liées (ressources cibles de sortie de flux (SOTargets), UAV du nuanceur de calcul (CS), affichages de ressources de nuanceur (SMV)).
    • Lie ppRenderTargetViews, ppDepthStencilView et ppUnorderedAccessViews.
  2. NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    Dans ce cas, OMSetRenderTargetsAndUnorderedAccessViews lie uniquement les UAV.

    Les conditions suivantes doivent avoir la valeur true pour que OMSetRenderTargetsAndUnorderedAccessViews réussisse et que le runtime transmette les informations de liaison au pilote :

    • UAVStartSlot + NumUAV<= 8
    • Il ne doit y avoir aucun conflit dans ppUnorderedAccessViews.
    OMSetRenderTargetsAndUnorderedAccessViews dissocie les éléments suivants :
    • Tous les VT dans les emplacements >= UAVStartSlot
    • Tous les VT qui entrent en conflit avec les UAV dans ppUnorderedAccessViews
    • Toutes les ressources actuellement liées (SOTargets, UAV CS, SMV) qui entrent en conflit avec ppUnorderedAccessViews
    OMSetRenderTargetsAndUnorderedAccessViews lie ppUnorderedAccessViews.

    OMSetRenderTargetsAndUnorderedAccessViews ignore ppDepthStencilView, et la vue de gabarit de profondeur actuelle reste liée.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    Dans ce cas, OMSetRenderTargetsAndUnorderedAccessViews lie uniquement les VT et DSV.

    Les conditions suivantes doivent avoir la valeur true pour que OMSetRenderTargetsAndUnorderedAccessViews réussisse et que le runtime transmette les informations de liaison au pilote :

    • NumRTVs<= 8
    • Il ne doit y avoir aucun conflit dans ppRenderTargetViews.
    • ppDepthStencilView doit correspondre aux vues cibles de rendu. Pour plus d’informations sur les vues de ressources, consultez Présentation d’une ressource dans Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews dissocie les éléments suivants :
    • Tous les UAV dans les emplacements <NumRTVs
    • Tous les UAV qui entrent en conflit avec les VTR dans ppRenderTargetViews
    • Toutes les ressources actuellement liées (SOTargets, UAV CS, SMV) qui entrent en conflit avec ppRenderTargetViews
    OMSetRenderTargetsAndUnorderedAccessViews lie ppRenderTargetViews et ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignore UAVStartSlot.

Windows Phone 8 : Cette API est prise en charge.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d11.h
Bibliothèque D3D11.lib

Voir aussi

ID3D11DeviceContext