Como posso criar um sombreador de geometria que possa lidar com várias primitivas? Por exemplo, ao criar um sombreador de geometria para triângulos, defino um layout da seguinte forma:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
Mas se eu usar esse shader, as linhas ou pontos não aparecerão. Então adicionando:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(lines) in;
layout(line_strip, max_vertices=2) out;
O sombreador será compilado e executado, mas renderizará apenas linhas (ou qualquer que seja a última primitiva definida).
Então, como defino um único sombreador de geometria que manipulará vários tipos de primitivas? Ou isso não é possível e eu preciso criar vários programas de sombreador e alterar programas de sombreador antes de desenhar cada tipo?
fonte