Может ли DirectX11 тесселяровать список треугольников? - PullRequest
0 голосов
/ 13 июня 2018

Этот вопрос возникает при использовании DirectX 11.

У меня есть набор геометрии в виде списков треугольников.Я могу без проблем визуализировать их с помощью вершинного шейдера и пиксельного шейдера.

Если я добавлю шейдер корпуса, шейдер домена и геометрический шейдер в конвейер (скомпилируйте шейдеры и свяжите их с контекстом рендеринга)) треугольники все еще визуализируются, однако я не верю, что мой шейдер корпуса, или шейдер домена, или геометрический шейдер называются.

Итак, мой вопрос: будут ли вызываться шейдер корпуса, шейдер домена и геометрический шейдер, если примитивный тип представляет собой список треугольников?Я нашел только примеры тесселяции с использованием списков исправлений контрольных точек.Работает ли тесселяция со списками треугольников?

1 Ответ

0 голосов
/ 14 июня 2018

Если тип примитива D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST, шейдер корпуса, шейдер домена и геометрический шейдер не вызываются.(Только вершинный и пиксельный шейдеры.) В соответствии с Документация Microsoft вы должны использовать патч-примитив.

После включения тесселяции входные данные на этапе ввода-ассемблера должны быть данными исправлений.

Для треугольных списков вы можете переключить примитив на D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST, и это работает.(Предполагая, что вы связали свой корпус, домен и геометрический шейдер.) (Для треугольных полос не кажется простым решением.)

...