[osg-users] Efficient way to swap colors

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Wed Sep 6 00:23:18 PDT 2017


Hi Antoine,
> Hello all
> 
> I have a mesh (a osg::Geometry) which I would like to change color depending on the mode it s in:
> 
> 	 osg::Geometry all white by default
> 
> 	 osg::Geometry all blue when selected
> 
> 
> 
> In order to achieve this I thought of using the BIND_OVERALL mode with 2 Vec3Arrays (one array for the white color and the other one for the blue color) and simply swapping arrays to change the color (with osg::Geometry::setColorArray()), and calling dirtyDisplayList() to update.

Don't use display lists if you're planning on updating geometry on a 
regular base (since rebuilding a display list can be a rather costly 
operation). Use vertex buffer objects instead. In case you're modifying 
the complete geometry but no individual faces, you might consider using 
osg::Material or if you're using shaders anyways, simply set a uniform 
describing your color and specify it in the geometries state set.



> 
> Is this the most efficient way of changing the osg::Geometry color?
Depends ;-)

There usually isn't one most efficient way. In your case, swapping might 
be efficient, but you simply need to benchmark and decide for yourself 
which fits the bill.

Cheers
Sebastian
> 
> Thanks a lot,
> 
> Antoine[/list][/list]
> 
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=71629#71629
> 
> 
> 
> 
> 
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 


More information about the osg-users mailing list