etap Stream-Output
Celem etapu strumienia wyjściowego jest ciągłe wyjście (lub strumień) danych wierzchołka z etapu cieniowania geometrycznego (lub etap cieniowania wierzchołka, jeśli etap cieniowania geometrii jest nieaktywny) do co najmniej jednego buforu w pamięci (zobacz Wprowadzenie do etapu Stream-Output).
Etap strumienia wyjściowego (SO) znajduje się w potoku bezpośrednio po etapie cieniowania geometrii i tuż przed etapem rasteryzacji, jak pokazano na poniższym diagramie.
potoku
Dane przesyłane strumieniowo do pamięci można odczytać z powrotem do potoku w kolejnym przekazaniu renderowania lub skopiować je do zasobu przejściowego (aby można je było odczytać za pomocą procesora CPU). Ilość przesyłanych strumieniowo danych może się różnić; interfejs API ID3D11DeviceContext::D rawAuto jest przeznaczony do obsługi danych bez konieczności wykonywania zapytań (procesora GPU) o ilości zapisanych danych.
Gdy trójkąt lub pasek liniowy jest powiązany ze etapem asemblera wejściowego, każdy pasek jest konwertowany na listę przed ich przesyłaniem strumieniowym. Wierzchołki są zawsze zapisywane jako kompletne wierzchołki (na przykład 3 wierzchołki w czasie dla trójkątów); niekompletne elementy pierwotne nigdy nie są przesyłane strumieniowo. Typy pierwotne z sąsiedztwem odrzucają dane sąsiedztwa przed przesyłaniem strumieniowym danych.
Istnieją dwa sposoby przesyłania danych wyjściowych strumienia do potoku:
- Dane wyjściowe strumienia mogą być przekazywane z powrotem do etapu asemblera wejściowego.
- Dane wyjściowe strumienia mogą być odczytywane przez programowalne cieniowania przy użyciu funkcji ładowania (takich jak Load).
Aby użyć buforu jako zasobu strumienia wyjściowego, utwórz bufor z flagą D3D11_BIND_STREAM_OUTPUT. Etap strumienia wyjściowego obsługuje maksymalnie 4 jednocześnie.
- W przypadku przesyłania danych przesyłanych strumieniowo do wielu każdy bufor może przechwytywać tylko jeden element (do 4 składników) danych na wierzchołek, przy użyciu dorozumianego kroku danych równego szerokości elementu w każdym buforze (zgodny ze sposobem, w jaki pojedynczego elementu mogą być powiązane dla danych wejściowych do etapów cieniowania). Ponadto, jeśli mają różne rozmiary, zapisywanie zatrzymuje się zaraz po zapełnieniu jednego z.
- W przypadku przesyłania strumieniowego danych do pojedynczego buforu bufor może przechwytywać do 64 składników skalarnych danych na wierzchołki (256 bajtów lub mniej) lub krok wierzchołka może wynosić do 2048 bajtów.
W tej sekcji
Temat | Opis |
---|---|
wprowadzenie do etapu Stream-Output |
W tej sekcji opisano sposób używania cieniowania geometrii z etapem danych wyjściowych strumienia. |
Tematy pokrewne
-
etapy potoku (Direct3D 10)