osg之osgViewer基础应用

来源:互联网 发布:中海达数据导出 编辑:程序博客网 时间:2024/06/05 18:49

最开始的应用是读取模型了

int main(){    osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;    osg::ref_ptr<osg::Node> node=new osg::Node;    node=osgDB::readNodeFile("glider.osg");    //添加帮助    viewer->addEventHandler(new osgViewer::HelpHandler);    //添加状态    viewer->addEventHandler(new osgViewer::StatsHandler);    //添加窗口大小变化    viewer->addEventHandler(new osgViewer::WindowSizeHandler);    viewer->setSceneData(node);    return viewer->run();}

osg::Timer的应用:
举例说明,例如读取一个模型:
方法一:

int main(){    osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;    osg::ref_ptr<osg::Node> node=new osg::Node;   //申请一个定时器    osg::Timer* timer=new osg::Timer;    osg::Timer_t start_time=0;    osg::Timer_t end_time=0;    //得到一个tick值为多少    std::cout<<timer->getSecondsPerTick()<<std::endl;    //读取模型    start_time=timer->tick();    node=osgDB::readNodeFile("glider.osg");    end_time=timer->tick();    std::cout<<timer->delta_s(start_time,end_time)<<std::endl;    viewer->addEventHandler(new osgViewer::HelpHandler);    viewer->addEventHandler(new PrintName);    viewer->addEventHandler(new osgViewer::StatsHandler);    viewer->addEventHandler(new osgViewer::WindowSizeHandler);    viewer->setSceneData(node);    return viewer->run();}

方法二:

int main(){    osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;    osg::ref_ptr<osg::Node> node=new osg::Node;   //申请一个定时器    osg::Timer* timer=new osg::Timer;    osg::Timer_t start_time=0;    osg::Timer_t end_time=0;    //得到一个tick值为多少    std::cout<<timer->getSecondsPerTick()<<std::endl;    //读取模型    //start_time=timer->tick();    timer->setStartTick();    node=osgDB::readNodeFile("glider.osg");    //end_time=timer->tick();    std::cout<<timer->time_s()<<std::endl;    viewer->addEventHandler(new osgViewer::HelpHandler);    viewer->addEventHandler(new PrintName);    viewer->addEventHandler(new osgViewer::StatsHandler);    viewer->addEventHandler(new osgViewer::WindowSizeHandler);    viewer->setSceneData(node);    return viewer->run();}

方法三:

int main(){    osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;    osg::ref_ptr<osg::Node> node=new osg::Node;   //申请一个定时器    osg::Timer* timer=new osg::Timer;    float start_time=0.0;    float end_time=0.0;    //得到一个tick值为多少    std::cout<<timer->getSecondsPerTick()<<std::endl;    //读取模型    //start_time=timer->tick();    //timer->setStartTick();    start_time=viewer->elapsedTime();    node=osgDB::readNodeFile("glider.osg");    //end_time=timer->tick();    end_time=viewer->elapsedTime();    std::cout<<end_time-start_time<<std::endl;    viewer->addEventHandler(new osgViewer::HelpHandler);    viewer->addEventHandler(new PrintName);    viewer->addEventHandler(new osgViewer::StatsHandler);    viewer->addEventHandler(new osgViewer::WindowSizeHandler);    viewer->setSceneData(node);    return viewer->run();}
原创粉丝点击