OpenGL TES, возможно ли иметь информацию о смежности в выводе?

Мне интересно, может ли шейдер оценки тесселяции (TES) каким-то образом вывести информацию о смежности, которая затем может быть использована геометрическим шейдером (GS).

Давайте возьмем в качестве примера комбинацию TCS/TES, отрисовывающую некоторые изокуры с использованием layout (isolines, equal_spacing, ccw) in, Впоследствии используя layout (lines) in в GS работает, правда layout (lines_adjacency) in не. Я знаю, что информация о смежности должна быть предоставлена ​​явно в случае, когда TCS/TES отсутствуют (например, с использованием обновленного списка индексов и glDrawElements с помощью GL_LINES_ADJACENCY), но есть ли способ позволить TES генерировать эту информацию? Читая этот раздел, кажется, что эта информация не может быть сгенерирована автоматически - надеюсь, я что-то упускаю.

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

Очень похожий вопрос был задан ранее здесь, до сих пор без окончательного ответа.

1 ответ

Генератор примитивов тесселяции генерирует только последовательности точечных, линейных или треугольных примитивов на основе типа абстрактного патча и point_mode поколение. Он никогда не генерирует полосы / фанаты / списки и, конечно, не примитивы смежности.

То, что вы хотите, было бы лучше обработано, если бы TES генерировал дополнительные данные для каждой вершины, которые GS будет использовать, чтобы делать то, для чего вы хотели получить информацию о смежности.

Другие вопросы по тегам