Hi all,
I have a requirement to build a list of all textures used in a scene graph.
For this purpose, I have used a NodeVisitor derived class with the apply
function given below.
Problem: I am not able to get the details of textures used by the attached
Particle systems. I would be very grateful if someone can help with some hints
/ pointers.
Regards
Harash
Apply Function:
----------------void
{
osg::Node* Ptr = &searchNode;
osg::StateSet* state = Ptr->getStateSet();
FindTextureVisitor::apply(osg::Node &searchNode) // get the state set for the
node osg::StateSet::TextureAttributeList Attr; // Attr =
state->getTextureAttributeList(); if(state != NULL) { intSz =
Attr.size(); // for all the attributes, find the ones related to
texture osg::ref_ptr<osg::Texture> texture =
(j,osg::StateAttribute::TEXTURE)); // if a texture is found
{ if(texture.valid()) // This is a valuable node
containing texture foundNodeList.push_back(&searchNode);
// also store the Texture object related to this node so we
// don't have to repeat the call to get Texture attribute List
foundTextureList.push_back(texture); // Now search if the
texture has already been used by an earlier node // get the
image related to the texture osg::ref_ptr<osg::Image> texImage =
texture->getImage(0); // check if it is already in the list
std::string filename = texImage->getFileName();
intTexSz = foundImageList.size(); // TextureList.size();
flag =
}
} boolflag = true; for(intk = 0;
k < TexSz; k++) { if(foundImageList[k]->getFileName() ==
filename) {false; break; if(flag) {
// No it is not on the List
foundImageList.push_back(texImage);
}
}
}
}
traverse(searchNode);
} // add it to the node list for(intj = 0; j< Sz; j++)
{dynamic_cast<osg::Texture*>(state->getTextureAttribute
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org