Hi J-S, Tim's analysis and suggestions are spot on.
I'll qualify a bit more with a bit of history on tri stripping. Tri stripping used the most efficient way to batch up geometry for sending to the graphics card, this was in the era when display listing was king, and there was very little vertex caching down on the GPU. Display lists are great in that they allow the graphics driver to efficiently repackage all the vertex and primitive data in the way the driver/GPU can most efficiently manage it. Fast forward to today, VBO's are in and display lists are on there way out. The cost of passing vertex data has gone down, but we don't hide the cost of dispatching the primitives like we could with display lists. This means that these days it's generally more efficient to send primitives as a single block of GL_TRIANGLES than lots of separate tri strips + fans. Tim's mesh optimizers directly take into account the modern design of GPU's and preference for coarse grain primitive sets. So tri-stripping is out of favour, mesh optimization in :-) As for cull, I don't think that's too high, and draw thread per context can hide this small cost anyway so no issue. More of issue is the number of batches of state that you have. Also working on reducing the number of transforms. Geometry instancing and shaders might be useful here. Robert. _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

