Нет, невозможно нарисовать дополнительные линии от вершинного шейдера.
Вершинный шейдер предназначен не для создания геометрии, а для вычисления каждой вершины. Используя вершинные шейдеры, когда вы говорите glDrawArrays(GL_TRIANGLES,0,3)
, именно это и определяет, что именно вы будете рисовать, то есть 1 треугольник. Как только обработка достигает вершинного шейдера, вы можете только изменить свойства вершин этого треугольника , никоим образом не изменять форму или форму, топологию и / или счет геометрии.
То, что вы ищете, это то, что OpenGL 3.2 определяет как геометрический шейдер , который позволяет выводить произвольный подсчет / топологию геометрии из шейдера. Тем не менее, обратите внимание, что это поддерживается только через OpenGL 3.2, что не многие карты / драйверы поддерживают в настоящее время (он вышел уже несколько месяцев).
Однако я должен указать, что показ нормалей (в большинстве движков, которые поддерживают какую-либо отладку) обычно выполняется с помощью традиционного рендеринга строк с дополнительным буфером вершин, который заполняется соответствующими позициями (P, P + C * N) для каждой позиции сетки, где C - это константа, представляющая длину, которую вы хотите использовать для отображения нормалей. Это не так сложно написать ...