[osg-users] [About VertexArrayObject Branch] FeedBack and Insight

Julien Valentin julienvalentin51 at gmail.com
Tue Aug 16 11:55:53 PDT 2016

Hi Robert 
I would rather you to give the test scene for benchmark, mine is not-by-me-copyrighted
An you're right in my VAO system I have to force reaffectation of bufferobjects when useVertexArrays is set (in order to be drawable without basevertex drawcall) to false and doing so i discard user bos, and this is a bad...
however if I'd force the use of basevertex draw call in all cases It wouldn't be necessary

>  adding an extra layer of complexity is something that most users would really struggle with.

I don't understand what you refer to with this sentence...my only user interface is the usevertexArrayObject flag..?! user don't have to know about underlying stuff as the bo affectation pattern is the only fitting osg (no interleaved case) 

robertosfield wrote:
> Hi Julien,
> On 16 August 2016 at 18:37, Julien Valentin <> wrote:
> > Hello all
> > @scraw : geometries doesn't have to share vertex arrays but bufferobjects..this is not the same:
> > The pattern that maximize vao reutilization is the followed
> > Geom1
> > G1VertAttrib1->BO1 G1VertAttrib2->BO2...and a Unique IndexArray->BON
> > Geom2
> > G2VertAttrib1->BO1 G2VertAttrib2->BO2...and a Unique IndexArray->BON
> > 
> > With this pattern and vao sharing I have not only draw stage drop but also a huge gpu charge decrease
> > The only problem is that you should use glDrawXXBaseVertex or offsetIndices of your IndexArray
> > 
> > My bench in release this time
> > .............................................................. Cull       Draw        GPU          FPS
> > Pattern on all geometries with 1VAO/Geom   2            4            1.37            160
> > Pattern on all geometries with shared VAOs   2            2            0.47            200
> > 
> > So I think there's interest in sharing vaos
> > 
> If you have a usage case please create an example that we can share
> and use when benchmarking.
> FYI, The VertexArrayState class that wraps up vertex array dispatch
> and vertex array objects when enabled is capable of enabling sharing
> between osg::Drawable.  In fact it's possible to share a single
> VertexArrayState between the whole scene graph just relying upon the
> VertexArrayState object in osg::State.  When VAO is not enabled
> osg::State maintains a single VertexArrayState object that handles all
> the vertex array dispatch.
> Currently I haven't exposed the local osg::Drawable VertexArrayState
> object as publicly accessing able in osg::Drawable but this could be
> done easily.  I'm not yet convinced that this is good idea and don't
> yet know of the consequence that might unfold.
> Please remember the VAO system has to work well with the non VAO
> usage, performance overheads have to be kept to a minimum and the
> usage for end users has to be kept simple, adding an extra layer of
> complexity is something that most users would really struggle with.
> Robert.
> _______________________________________________
> osg-users mailing list
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>  ------------------
> Post generated by Mail2Forum

Read this topic online here:

More information about the osg-users mailing list