Tesselation of VERY large polygons

I have VERY large (more than 10000 vertices in boundary) polygons to tesselate every time window needs to be repainted. And even when a small fragment of such a polygon is actually visible within current view tremendous polygon tesselation job must be performed.
How can I reduce amount of calculations? Is there any way how to “clip” tesselation process itself by window boundary?

Hi !

If you have room for it, why not tesselate it once into a display list for example, this would speed up the rendering pretty much.

You could also use culling, there are lots of tutorials on this, search on google for “view frustum culling”, what you do is that you break up the polygons into small parts and check each part if it is visible in the viewport, if not, then you don’t render it.

But this only works for big polygons (big as in area), if you have a “normal” sized polygon that is just very complex then I don’t think it would do much good.


Display lists are nearly unacceptable because polygons may suffer from minor editing like vertex moving.
Frustum culling eliminates only redundant rendering but not tesselation. Furthermore currently I already have space partitioning machinery, but it’s completely inefficient with large non-convex polygons. I have no idea how to break them into parts.