Как я могу создать геометрический шейдер, который может обрабатывать несколько примитивов? Например, при создании геометрического шейдера для треугольников я определяю макет следующим образом:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
Но если я использую этот шейдер, то линии или точки не будут отображаться. Итак добавив:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(lines) in;
layout(line_strip, max_vertices=2) out;
Шейдер будет компилироваться и запускаться, но будет рендерить только строки (или что-то, что было определено последним примитивом).
Итак, как мне определить один геометрический шейдер, который будет обрабатывать несколько типов примитивов? Или это невозможно, и мне нужно создать несколько программ шейдеров и изменить программы шейдеров перед рисованием каждого типа?
источник