этап Stream-Output
Цель этапа потокового вывода — непрерывно выводить (или поток) данные вершин из этапа геометрии-шейдера (или этап вершинного шейдера, если этап геометрии-шейдера неактивен) в одну или несколько буферов в памяти (см. начало работы с этапом Stream-Output).
Этап потокового вывода (SO) находится в конвейере сразу после этапа геометрического шейдера и непосредственно перед этапом растрации, как показано на следующей схеме.
Данные, которые передаются в память, можно считывать обратно в конвейер в последующем проходе отрисовки или копировать в промежуточный ресурс (чтобы его можно было считывать ЦП). Объем потоковых данных может отличаться; API ID3D11DeviceContext::D rawAuto предназначен для обработки данных без необходимости запрашивать (GPU) о количестве записанных данных.
Если треугольник или полоса линии привязана к этапу входного сборщика, каждая полоса преобразуется в список до их передачи. Вершины всегда записываются как полные примитивы (например, 3 вершины за раз для треугольников); неполные примитивы никогда не передаются. Примитивные типы с примежаемостью отменяют данные зависимостей перед потоковой передачей данных.
Существует два способа передачи выходных данных потока в конвейер.
- Выходные данные потока можно передать обратно в этап сборщика входных данных.
- Потоковые выходные данные можно считывать с помощью программируемых шейдеров с помощью функций загрузки (например, загрузки).
Чтобы использовать буфер в качестве ресурса потокового вывода, создайте буфер с флагом D3D11_BIND_STREAM_OUTPUT. Этап потокового вывода поддерживает до 4 буферов одновременно.
- При потоковой передаче данных в несколько буферов каждый буфер может записывать только один элемент (до 4 компонентов) данных на вершинах с подразумеваемым шагом, равным ширине элемента в каждом буфере (совместим с тем, как буферы одного элемента могут быть привязаны для ввода в этапы шейдера). Кроме того, если буферы имеют разные размеры, запись останавливается, как только любой из буферов заполнен.
- Если вы выполняете потоковую передачу данных в один буфер, буфер может записывать до 64 скалярных компонентов данных на вершины (256 байт или меньше), или вершина может превышать 2048 байт.
В этом разделе
Тема | Описание |
---|---|
начало работы с этапом Stream-Output |
В этом разделе описывается использование геометрического шейдера с этапом вывода потока. |
Связанные разделы
-
этапы конвейера (Direct3D 10)