What exactly do "Primitive Assembly" and "Geometry Shader"?

  3d-rendering, c++, directx, opengl, vulkan

enter image description here

i’m learing OpenGL Tutorial(https://learnopengl.com/Getting-started/Hello-Triangle)

The following part of what I don’t understand.

The purpose of the primitive assembly step is to convert a vertex stream into a sequence of base primitives. For example, a primitive which is a line list of 12 vertices needs to generate 11 line base primitives. The full primitive assembly step (including the processing below) will happen during Vertex Post-Processing. However, some Vertex Processing steps require that a primitive be decomposed into a sequence of base primitives. For example, a Geometry Shader operates on each input base primitive in the primitive sequence. Therefore, a form of primitive assembly must happen before the GS can execute. This early primitive assembly only performs the conversion to base primitives. It does not perform any of the below processing steps. Such early processing must happen if a Geometry Shader or Tessellation is active. The early assembly step for Tessellation is simplified, since Patch Primitives are always sequences of patches.

  1. If OpenGL draw a shape by referring to the Primary in step Primitive Assembly,
    that can draw all the shapes in step Primitive Assembly.
    Why is OpenGL dividing the steps Primitive Assembly and Geometry Shader?

  2. What exactly do Primitive Assembly and Geometry Shader do?

let’s just say i’m elemently student, could you explain that more easy?

Source: Windows Questions C++