У меня есть 2 функции, одна для входа и выхода из режима каркаса:
void enterWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)
{
osg::Node* scene = viewer->getSceneData();
osg::Group* parent = scene->getParent(0);
osg::Node* node = parent->getChild(0);
auto scribe = new osgFX::Scribe();
scribe->addChild(node);
parent->replaceChild(node, scribe);
}
А для выхода:
void exitWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)
{
osg::Node* scene = viewer->getSceneData();
osg::Group* parent = scene->getParent(0);
osg::Node* node = (dynamic_cast<osg::Group*>(scene))->getChild(0);
parent->replaceChild(parent, node);
}
В основном я запустил программу в следующей последовательности:
enterWireFrame(...);
exitWireFrame(...);
enterWireFrame()
хорошо отображает каркас, но я не могу вернуть исходный вид без каркаса, несмотря на выполнение exitWireFrame()
.