I would like to create smooth curves using the tessellation shader. First, I tried to create Bezier curves with tessellation (patch number = 4), but if I have a line with more than 4 control points, then there are gaps at every 4 vertices. This is why it is recommended to use B-splines. This is the B-spline formula, where * Pi* is the control point

*:*

**i**(* u* is just

`gl_TessCoord.x`

)So if we have 8 control points for example, then we would need:

P0 P1 P2 P3

P1 P2 P3 P4

P2 P3 P4 P5 etc.

However, the tessellation stage takes 4 vertices at a time, which means it would take:

P0 P1 P2 P3

P4 P5 P6 P7

There is no overlap in the way the tessellator takes the vertices, correct? If thatâ€™s true then how am I going to create the B-splines?

One solution would be instead of using the initial buffer:

[P0 , P1 , P2 , P3 , P4 , P5 , P6 ,P7]

to pass this buffer (new control points):

[P0 , P1 , P2 , P3 , P1 , P2 , P3 , P4 , P2 , P3 , P4 , P5 â€¦ ]

But isnâ€™t that a waste of space, because the new buffer has more than 2x the size of the initial control points?