|
我写了个代码,打开文件对话框,选择多个osg文件,然后想获取这些三维模型的图片,我现在获取到了多个osg文件的路径名,然后想依次载入单个模型,并进行截图,我在外部利用RemoveChild与AddChild分别来删除当前节点以及添加新的节点以实现模型循环加载,但在加载完模型后如何使osg自动重绘,请高手指教!谢谢
代码:
CString strFilePath;
std::vector<std::string> strPathVec;
strPathVec.clear();
if(Filedlg.DoModal() == IDOK)
{
POSITION pos = Filedlg.GetStartPosition();
while(pos != NULL)
{
m_pOSG->ClearSceneGraph();
strFilePath=Filedlg.GetNextPathName(pos);
strPathVec.push_back(strFilePath.GetString());
m_pOSG->AddModel(strFilePath.GetString());
//此处如何让osg viewer重绘???
}
}
void COSG::ClearSceneGraph(void)
{
m_spRoot->removeChild(0, m_spRoot->getNumChildren());
}
void COSG::AddModel(std::string strPath)
{
osg::ref_ptr<osg::Node> spNode = osgDB::readNodeFile(strPath);
m_spRoot->addChild(spNode);
} |
|