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

Reply via email to