My relatively simple geometry shader
#version 330 core
layout (lines) in;
layout (triangle_strip, max_vertices = 3) out;
void main() {
gl_Position = gl_in[0].gl_Position;
EmitVertex();
gl_Position = gl_in[1].gl_Position;
EmitVertex();
gl_Position = 3 * (vec4 (0, 1, 0, 1) + vec4 (0, 0, 0, 1) + vec4 (1, 1, 0, 1));
EmitVertex();
EndPrimitive();
}
for some reason, computes the third vertex by vector interpolation instead of vector addition, multiplication by scalar does not work either.