It is not dependent on xith3d, so I thought it can be useful for broader audience. It is a direct port ofhttp://developer.nvidia.com/object/nvtristrip_library.html
From their page:
NVTriStrip is a library for vertex cache aware stripification of geometry.
- generates strips from arbitrary geometry.
- flexibly optimizes for post TnL vertex caches.
- can stitch together strips using degenerate triangles, or not.
- can output lists instead of strips.
- can optionally throw excessively small strips into a list instead.
- can remap indices to improve spatial locality in your vertex buffers.
- API and OS independent.
It is not yet fully tested, but basic stripification (convert to single long strip with degenerate triangle connection) works.
I'll continue to update this code, most probably also remove Nv prefixes from most classes, but this should not be a problem, as library has only 2-3 entry points and it should be trivial to update code if any change happens there. If you will find any problems with it, please let me know, but:
This is just a port, I do not claim I fully understand how it works. So, if something is broken in C++ version, it will be also broken in java version and will probably stay this way.
It IS slow for big objects. Algorithm is at least n^2, so expect big waits if you will go into umpteen thousands of faces and do not hope it will ever finish for hundreds of thousands.