I am working on an old code base that uses Geometry shaders. It uses "glProgramParameteriEXT(…) to enable and specify Input/Output of the GS. The code in question is rendering curves.
The input to the GS(via above mentioned method and not in the GLSL using layout specifier) is GL_LINES_ADJACENCY and output is GL_TRIANGLE_STRIP. And in the actual GLSL Geometry shader, the code spitting out two EmitVertex() as expected by GL_LINES. Eventually at the time of executing the drawcall, glDrawElements (GL_LINES, ….) is used. Is the draw call not supposed to match what was output by the GS, which is GL_TRIANGLE_STRIP? I am not too familiar geometry shaders so I must be missing something. If that is the case, how does openGL figure out to draw triangles while it is told to draw lines?
Source: Windows Questions C++