¿Cómo puedo crear un sombreador de geometría que pueda manejar múltiples primitivas? Por ejemplo, al crear un sombreador de geometría para triángulos, defino un diseño como este:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
Pero si uso este sombreador, las líneas o puntos no aparecerán. Entonces agregando:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(lines) in;
layout(line_strip, max_vertices=2) out;
El sombreador compilará y se ejecutará, pero solo renderizará líneas (o lo que sea la última primitiva definida).
Entonces, ¿cómo defino un sombreador de geometría único que manejará múltiples tipos de primitivas? ¿O no es posible y necesito crear múltiples programas de sombreado y cambiar los programas de sombreado antes de dibujar cada tipo?
fuente