osg之osgViewer基础应用

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

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();
}

猜你喜欢

转载自blog.csdn.net/u012288722/article/details/78462953