Dela via


Stream-Output fas

Syftet med stream-output-fasen är att kontinuerligt mata ut (eller strömma) hörndata från geometri-skuggningssteget (eller hörnskuggningssteget om geometri-skuggningssteget är inaktivt) till en eller flera buffertar i minnet (se Komma igång med Stream-Output stage).

Stream-output-fasen (SO) finns i pipelinen direkt efter geometri-shader-stadiet och precis före rastreringssteget, som du ser i följande diagram.

diagram över stream-output-fasens plats i pipelinen

Data som strömmas ut till minnet kan läsas tillbaka till pipelinen i ett efterföljande återgivningspass eller kopieras till en mellanlagringsresurs (så att den kan läsas av processorn). Mängden data som strömmas ut kan variera. ID3D11DeviceContext::D rawAuto API är utformat för att hantera data utan att behöva fråga (GPU) om mängden data som skrivs.

När en triangel eller linjeremsa är bunden till indata-assembler-stadiet konverteras varje remsa till en lista innan de strömmas ut. Hörn skrivs alltid ut som fullständiga primitiver (till exempel 3 hörn i taget för trianglar); ofullständiga primitiver strömmas aldrig ut. Primitiva typer med angränsande tar bort angränsande data innan data strömmas ut.

Det finns två sätt att mata in strömmande data i pipelinen:

  • Stream-output-data kan matas tillbaka till indata-assembler-fasen.
  • Stream-output-data kan läsas av programmerbara skuggningar med hjälp av belastningsfunktioner (till exempel Läs in).

Om du vill använda en buffert som en strömutdataresurs skapar du bufferten med flaggan D3D11_BIND_STREAM_OUTPUT. Stream-output-fasen stöder upp till 4 buffertar samtidigt.

  • Om du strömmar data till flera buffertar kan varje buffert bara samla in ett enda element (upp till 4 komponenter) med data per hörn, med en underförstådd datasteg som är lika med elementbredden i varje buffert (kompatibelt med hur enstaka elementbuffertar kan bindas till indata i skuggningssteg). Om buffertarna dessutom har olika storlekar stoppas skrivning så snart någon av buffertarna är full.
  • Om du strömmar data till en enda buffert kan bufferten samla in upp till 64 skalärkomponenter av data per hörn (256 byte eller mindre) eller så kan hörnsteget vara upp till 2 048 byte.

I det här avsnittet

Ämne Beskrivning
Komma igång med Stream-Output Stage
I det här avsnittet beskrivs hur du använder en geometriskuggning med dataströmutdatasteget.

Grafikpipeline

pipelinesteg (Direct3D 10)