[osg-users] SetAttribute / RemoveAttribute Question

Paul Bigeon osgforum at tevs.eu
Tue Nov 28 08:35:41 PST 2017


Hi,

Considering I've created an osg::Material this way, and that the nodes are shown on screen :


Code:

m_material_selected = new osg::Material();
m_material_selected->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4f(0.2f, 0.2f, 0.75f, 0.5f));
m_material_selected->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4f(0.2f, 0.2f, 0.75f, 0.5f));
m_material_selected->setShininess(osg::Material::FRONT_AND_BACK, 75.0);
m_material_selected->setColorMode(osg::Material::AMBIENT);




And then I set it to a node like this ( this is apparently working so far ... ) :


Code:

// Where node_sel is a previously created osg::Node*
node_sel->getOrCreateStateSet()->setAttribute(m_material_selected, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);




But when I try to remove this attribute from the previously created node like this :


Code:

// Where node_unsel = node_sel;
node_unsel->getOrCreateStateSet()->removeAttribute(m_material_selected);




My app crashes.

What did I do wrong ? Is it unsafe to removeAttribute from a node this way ?
I've seen on the forum things like NodeVisitor class, should I be using this or can I change nodes manually ?


Thank you for your interest in my question,

Have a good day,

Paul

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=72479#72479







More information about the osg-users mailing list