i have a 2d vector graphics unit called glvg.
all shapes consists of paths made of line, qsplines and csplines.
those paths are tesselated(triangulated) before rendering. And you can force it to tesselate earlier e.g. after construction so it is already tesselated on rendering. E.g. the render is stupid and just renders a bunch of triangles.
I use glutess to do the tesselation.
For as far as i know only option 1 is possible.