[osg-users] removing texture from stateset
Julien Valentin
julienvalentin51 at gmail.com
Sat Jan 13 13:02:02 PST 2018
oups i post too fast
I wanted to write
Code:
StateSet::removeTextureAttribute(unit,texatt)
mp3butcher wrote:
> Hi Nickolov
> use
>
> Code:
> StateSet::removeTextureAttribute(unit,texatt)
>
>
> to remove a texture.
> Moreover when you erase you iterator it invalidates it ...so don't do like this
>
> Cheers
>
>
>
> Trajce Nikolov NICK wrote:
> > Hi Community,
> >
> > this should be simple, but I can not make it work. I have ive file with embedded texture and it is big file. All I want is to remove the texture and save it back. When I do this with the code bellow, and save the file, the file is not changing it's size. Any clue/hint?
> >
> >
> > Thanks a bunch as always!!!!
> >
> >
> > Nick
> >
> >
> > code
> > struct RemoveTextureVisitor : public osg::NodeVisitor
> > {
> > RemoveTextureVisitor()
> > : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
> > {
> > }
> >
> >
> > virtual void apply(osg::Node& node)
> > {
> > osg::ref_ptr<osg::StateSet> ss = node.getStateSet();
> > if (ss.valid())
> > {
> > osg::StateSet::AttributeList& attrs = ss->getAttributeList();
> > osg::StateSet::AttributeList::iterator itr = attrs.begin();
> > for (; itr != attrs.end(); ++itr)
> > {
> > const osg::StateSet::RefAttributePair& attrp = itr->second;
> > const osg::ref_ptr<osg::StateAttribute>& attr = attrp.first;
> >
> >
> > osg::ref_ptr<osg::Texture2D> texture = dynamic_cast<osg::Texture2D*>(attr.get());
> > if (texture.valid())
> > {
> > attrs.erase(itr);
> > break;
> > }
> > }
> > }
> >
> >
> > traverse(node);
> > }
> > };
> >
> >
> > --
> > trajce nikolov nick
> >
> > ------------------
> > Post generated by Mail2Forum
>
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=72751#72751
More information about the osg-users
mailing list