There are plenty of libraries around allowing to draw Bézier paths, but not that much information about how to implement one of those libraries.
The question is: What algorithms are used for drawing Bézier paths?
Searching on Internet, I found many documents about drawing Bézier lines (unfilled) using segments. This is obviously not enough.
I implemented a
pointInsideBezierPath function, it actually solve the equations in the standard algebraic way. Even if that could work on a GPU, I am concern about efficiency for drawing large Bézier with anti-aliasing.
I also had a look to convert the shape into triangles for fast drawing with the GPU.
To summarize, there are solutions, but I wonder which is the modern state of the art to this respect.
What are your requirements? How large are paths? What degree? What continuity?
Requirements: Well, setting requirements without understanding technical limits is not a good deal, but I guess the typical ones:
- A Path is an ordered list of Bezier curves.
- A Path is rendered by a stroke and a fill. Each accepting multiple rendering properties (color, gradients, etc.)
- Rendering must allows anti-aliasing.
- Joining point between bezier are limited only by it position
- Rendering is limited by the rectangular and discrete size of the surface.
Size of Paths: any, performance is obviously affected. Degrees: lines to cubic (1-3)
I thought that recent GPU have it as built-in.
Not that I know about.
BTW if you need some actual code then your question is off-topic here.
I know, I deliberately asked here and not in stackoverflow because I do not want code (way to broad anyway) but algorithms names, papers and comparisons.