Hi, I think you can get the current material like this : (didn't compiled but maybe as a hint)
osg::State* state = renderInfo.getState(); osg::State::AttributeMap& attrMap = state->getAttributeMap(); osg::StateAttribute::TypeMemberPair typeMember = std::make_pair<osg::StateAttribute::Type,int>(osg::StateAttribute::MATERIAL,0); osg::State::AttributeStack stack = attrMap[typeMember]; osg::State::AttributeVec attributes = stack.attributeVec; you iterate over attributes and dynamic_cast osg::StateAttribute to osg::Material On Tue, Jun 23, 2015 at 6:15 PM, Sebastian Messerschmidt < [email protected]> wrote: > > Am 23.06.2015 18:05, schrieb Gianluca Natale: > > Hi all, > > I’m using OSG 3.0.1. > > I have an issue when I try to retrieve the material properties from the > rendering info, in my custom drawable. > > > > To be clearer: > > I have a custom drawable, for which I implemented a > > > > myDrawable::drawImplementation(osg::RenderInfo& osgRenderInfo). > > > > When I try to get the material properties inside that function, by > following code: > > > > osg::StateSet drwbStateSet; > > osg::State *state = osgRenderInfo.getState(); > > state->captureCurrentState(drwbStateSet); > > > > the returned material properties is invalid. > > Specifically, I put a breakpoint in following function: > > > > StateSet::setAttribute(StateAttribute *attribute, > StateAttribute::OverrideValue value) > > > > that is called inside captureCurrentState. > > When the attribute is an osg::Material, the _ptr is different from the one > allocated when the material has been set, in the state set associated to a > parent node of that drawable. > > Furthermore, _userDataContainer is 0x0000000000000000, so no valid > osg::Material is returned in the captured state set. > > User data defaults to nullptr. So if you're not setting it up that is > expected. > As you don't explain why you are trying to inspect state during draw it is > hard to guess what you are after. > I simply guess that your state is set up somewhere further up in the > stategraph (i.e. in one of the parents) and that state is set up lazy. > Maybe Robert can give some insights here. > > > > > Any idea of the possible cause of the issue? Where did I go wrong? > > BTW, all other attributes (polygon offset, polygon mode, etc…) are > returned correctly. > > Are you sure you are setting up an osg::Material state attribute somewhere? > > > > Thanks, > > Gianluca Natale > > > > > > > _______________________________________________ > osg-users mailing > [email protected]http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > -- trajce nikolov nick
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

