Wie kann ich einen Geometrie-Shader erstellen, der mehrere Grundelemente verarbeiten kann? Wenn ich beispielsweise einen Geometrie-Shader für Dreiecke erstelle, definiere ich ein Layout wie folgt:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
Wenn ich diesen Shader verwende, werden Linien oder Punkte nicht angezeigt. Also füge hinzu:
layout(triangles) in;
layout(triangle_strip, max_vertices=3) out;
layout(lines) in;
layout(line_strip, max_vertices=2) out;
Der Shader wird kompiliert und ausgeführt, rendert jedoch nur Linien (oder was auch immer das zuletzt definierte Grundelement ist).
Wie definiere ich einen einzelnen Geometrie-Shader, der mehrere Arten von Grundelementen verarbeitet? Oder ist das nicht möglich und ich muss mehrere Shader-Programme erstellen und Shader-Programme ändern, bevor ich jeden Typ zeichne?
quelle