layout(triangles, invocations=3) in; layout(triangle_strip, max_vertices=6) out; out vec4 fcolor; in vec4 fca[]; in int gl_InvocationID; void main(){ if(gl_InvocationID == 0){ gl_Position = gl_in[0].gl_Position; fcolor = vec4(0, .5, .4, 1); EmitVertex(); gl_Position = gl_in[1].gl_Position; fcolor = vec4(0, .5, .4, 1); EmitVertex(); gl_Position = gl_in[2].gl_Position; fcolor = vec4(0, .5, .4, 1); EmitVertex(); EndPrimitive(); return; } vec4 move; if(gl_InvocationID == 1) move = vec4(10, 0, 0, 0); else move = vec4(-10, 0, 0, 0); gl_Position = gl_in[0].gl_Position + move; fcolor = fca[0]; EmitVertex(); gl_Position = gl_in[1].gl_Position + move; fcolor = fca[0]; EmitVertex(); gl_Position = gl_in[2].gl_Position + move; fcolor = fca[0]; EmitVertex(); EndPrimitive(); }