Delen via


Stream-Output fase

Het doel van de stroomuitvoerfase is het continu uitvoeren (of streamen) van hoekpuntgegevens uit de geometrie-shader-fase (of de fase van de hoekpunt-shader als de fase geometrie-shader inactief is) naar een of meer buffers in het geheugen (zie Aan de slag met de Stream-Output Fase).

De stroomuitvoerfase (SO) bevindt zich in de pijplijn direct na de geometrie-shader-fase en vlak voor de rasterfase, zoals wordt weergegeven in het volgende diagram.

diagram van de locatie van de stroomuitvoerfase in de pijplijn

Gegevens die naar het geheugen worden gestreamd, kunnen in een volgende renderingspas worden teruggelezen in de pijplijn of kunnen worden gekopieerd naar een faseringsresource (zodat deze kunnen worden gelezen door de CPU). De hoeveelheid gegevens die wordt gestreamd, kan variëren; de ID3D11DeviceContext::D rawAuto-API is ontworpen om de gegevens te verwerken zonder dat er query's hoeven te worden uitgevoerd (de GPU) over de hoeveelheid geschreven gegevens.

Wanneer een driehoek of lijnstrook is gebonden aan de fase van de invoerassemblyer, wordt elke strip geconverteerd naar een lijst voordat ze worden gestreamd. Hoekpunten worden altijd als volledige primitieven weggeschreven (bijvoorbeeld 3 hoekpunten tegelijk voor driehoeken); onvolledige primitieven worden nooit uitgestreamd. Primitieve typen met aangrenzing negeren de aangrenzingsgegevens voordat gegevens worden gestreamd.

Er zijn twee manieren om stroomuitvoergegevens in de pijplijn te voeren:

  • Stream-outputgegevens kunnen worden teruggegeven aan de fase invoerassembly.
  • Stream-outputgegevens kunnen worden gelezen door programmeerbare shaders met behulp van loadfuncties (zoals Laden).

Als u een buffer wilt gebruiken als een stroomuitvoerresource, maakt u de buffer met de vlag D3D11_BIND_STREAM_OUTPUT. De stroomuitvoerfase ondersteunt maximaal 4 buffers tegelijk.

  • Als u gegevens in meerdere buffers streamt, kan elke buffer slechts één element (maximaal 4 onderdelen) van gegevens per hoekpunt vastleggen, waarbij een impliciete gegevensoverschrijving gelijk is aan de breedte van het element in elke buffer (compatibel met de manier waarop buffers van één element kunnen worden gebonden aan invoer in shader-fasen). Als de buffers verschillende grootten hebben, stopt het schrijven bovendien zodra een van de buffers vol is.
  • Als u gegevens in één buffer streamt, kan de buffer maximaal 64 scalaire onderdelen van gegevens per hoekpunt (256 bytes of minder) vastleggen of kan de hoekpunt-stride maximaal 2048 bytes zijn.

In deze sectie

Onderwerp Beschrijving
Aan de slag met de Stream-Output Fase
In deze sectie wordt beschreven hoe u een geometrie-shader gebruikt met de stroomuitvoerfase.

Graphics Pipeline-

pijplijnfasen (Direct3D 10)