Partager via


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

Liez une ou plusieurs cibles de rendu atomiquement et la mémoire tampon de gabarit de profondeur à l’étape de fusion de sortie.

Syntaxe

void OMSetRenderTargets(
  [in]           UINT                   NumViews,
  [in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
  [in, optional] ID3D11DepthStencilView *pDepthStencilView
);

Paramètres

[in] NumViews

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.

[in, optional] ppRenderTargetViews

Type : ID3D11RenderTargetView*

Pointeur vers un tableau d’ID3D11RenderTargetView qui représente les cibles de rendu à lier à l’appareil. Si ce paramètre a la valeur NULL et Que NumViews 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.

Valeur de retour

None

Remarques

Le nombre maximal de cibles de rendu actives qu’un appareil peut avoir à un moment donné est défini par une #define dans D3D11.h appelée D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. Il n’est pas valide d’essayer de définir la même sous-ressource sur plusieurs emplacements cibles de rendu. Toutes les cibles de rendu non définies par cet appel sont définies sur NULL.

Si des sous-ressources sont également actuellement liées à la lecture dans un autre stade ou écriture (peut-être dans une autre partie du pipeline), ces points de liaison sont définis sur NULL, afin d’empêcher la même sous-ressource d’être lue et écrite simultanément dans une seule opération de rendu.

La méthode contient une référence aux interfaces transmises. Cela diffère du comportement de l’état de l’appareil dans Direct3D 10.

Si les vues cibles de rendu ont été créées à partir d’un type de ressource de tableau, toutes les vues cibles de rendu doivent avoir la même taille de tableau.
Cette restriction s’applique également à la vue de gabarit de profondeur. Sa taille de tableau doit correspondre à celle des vues cibles de rendu liées.

Le nuanceur de pixels doit être en mesure de rendre simultanément au moins huit cibles de rendu distinctes. Toutes ces cibles de rendu doivent accéder au même type de ressource : Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D ou TextureCube. Toutes les cibles de rendu doivent avoir la même taille dans toutes les dimensions (largeur et hauteur, et profondeur pour la taille 3D ou de tableau pour les types *Array). Si les cibles de rendu utilisent l’anti-aliasing multiéchantillon, toutes les cibles de rendu liées et la mémoire tampon de profondeur doivent être la même forme de ressource multiéchantillon (autrement dit, le nombre d’exemples doit être identique). Chaque cible de rendu peut avoir un format de données différent. Ces formats cibles de rendu ne doivent pas nécessairement avoir des nombres de bits par élément identiques.

Toute combinaison des huit emplacements pour les cibles de rendu peut avoir une cible de rendu définie ou non définie.

La même vue de ressources ne peut pas être liée à plusieurs emplacements cibles de rendu simultanément. Toutefois, vous pouvez définir plusieurs vues de ressources sans chevauchement d’une seule ressource en tant que cibles de rendu multiples simultanées.

Notez que contrairement à d’autres méthodes de ressources dans Direct3D, toutes les cibles de rendu actuellement liées seront non liées en appelant OMSetRenderTargets(0, nullptr, nullptr);.

Configuration requise

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

Voir aussi

ID3D11DeviceContext