Partager via


étape de Stream-Output

L’objectif de l’étape de sortie de flux consiste à générer en continu (ou diffuser) des données de vertex de l’étape du nuanceur de géométrie (ou de l’étape du nuanceur de vertex si l’étape du nuanceur geometry est inactive) à une ou plusieurs mémoires tampons en mémoire (voir Prise en main de l’étape de Stream-Output étape).

L’étape de sortie de flux (SO) se trouve dans le pipeline juste après l’étape du nuanceur géométrique et juste avant l’étape de rastérisation, comme illustré dans le diagramme suivant.

diagramme de l’emplacement de l’étape de sortie de flux dans le pipeline

Les données diffusées en mémoire peuvent être lues dans le pipeline dans une passe de rendu ultérieure, ou être copiées dans une ressource intermédiaire (afin qu’elles puissent être lues par le processeur). La quantité de données diffusées en continu peut varier ; l’API ID3D11DeviceContext ::D rawAuto est conçue pour gérer les données sans avoir à interroger (le GPU) sur la quantité de données écrites.

Lorsqu’un triangle ou une bande de traits est lié à l’étape d’assembleur d’entrée, chaque bande est convertie en liste avant qu’elles ne soient diffusées en continu. Les sommets sont toujours écrits sous forme de primitives complètes (par exemple, 3 sommets à la fois pour les triangles) ; les primitives incomplètes ne sont jamais diffusées en continu. Les types primitifs avec adjacency ignorent les données d’adjacency avant la sortie des données de diffusion en continu.

Il existe deux façons de nourrir les données de sortie de flux dans le pipeline :

  • Les données de sortie de flux peuvent être renvoyées à l’étape de l’assembleur d’entrée.
  • Les données de sortie de flux peuvent être lues par des nuanceurs programmables à l’aide de fonctions de charge (telles que Load).

Pour utiliser une mémoire tampon comme ressource de sortie de flux, créez la mémoire tampon avec l’indicateur de D3D11_BIND_STREAM_OUTPUT. L’étape de sortie de flux prend en charge jusqu’à 4 mémoires tampons simultanément.

  • Si vous diffusez des données en continu dans plusieurs mémoires tampons, chaque mémoire tampon ne peut capturer qu’un seul élément (jusqu’à 4 composants) de données par vertex, avec un pas de données implicite égal à la largeur de l’élément dans chaque mémoire tampon (compatible avec la façon dont les mémoires tampons d’élément unique peuvent être liées pour l’entrée dans les étapes du nuanceur). En outre, si les mémoires tampons ont des tailles différentes, l’écriture s’arrête dès que l’une des mémoires tampons est pleine.
  • Si vous diffusez des données dans une mémoire tampon unique, la mémoire tampon peut capturer jusqu’à 64 composants scalaires de données par vertex (256 octets ou moins) ou le pas de vertex peut atteindre 2 048 octets.

Dans cette section

Sujet Description
prise en main de l’étape de Stream-Output
Cette section explique comment utiliser un nuanceur geometry avec l’étape de sortie de flux.

de pipeline Graphics

étapes de pipeline (Direct3D 10)