zoukankan      html  css  js  c++  java
  • OSG简单测试框架

    #include <osgDB/ReadFile>
    #include <osgDB/FileUtils>
    
    #include <osg/ArgumentParser>
    #include <osgViewer/Viewer>
    #include <osgViewer/ViewerEventHandlers>
    #include <osgGA/StateSetManipulator>
    
    #ifdef _DEBUG
    #pragma comment(lib, "osgd.lib")
    #pragma comment(lib, "osgDBd.lib")
    #pragma comment(lib, "osgViewerd.lib")
    #pragma comment(lib, "osgGAd.lib")
    #else
    #pragma comment(lib, "osg.lib")
    #pragma comment(lib, "osgDB.lib")
    #pragma comment(lib, "osgViewer.lib")
    #pragma comment(lib, "osgGA.lib")
    #endif // DEBUG
    
    
    int main(int argc, char **argv)
    {
        // use an ArgumentParser object to manage the program arguments.
        osg::ArgumentParser arguments(&argc, argv);
    
        // set up the usage document, in case we need to print out how to use this program.
        arguments.getApplicationUsage()->setApplicationName(arguments.getApplicationName());
        arguments.getApplicationUsage()->setDescription(arguments.getApplicationName() + " is an OpenSceneGraph example that shows how to use the accumulation buffer to achieve a simple motion blur effect.");
        arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName() + " data path. e.g. D:\OSG\Data. 如果此参数为空,则读取当前文件目录下的Data目录");
        arguments.getApplicationUsage()->addCommandLineOption("-h or --help", "Display this information");
        //arguments.getApplicationUsage()->addCommandLineOption("-arg1", "arg1");
    
        // construct the viewer.
        osgViewer::Viewer viewer;
    
        // if user request help write it out to cout.
        if (arguments.read("-h") || arguments.read("--help"))
        {
            arguments.getApplicationUsage()->write(std::cout);
            return 1;
        }
    
        double arg1 = 0.25;
        arguments.read("-arg1", arg1);
    
        osg::ref_ptr<osg::Group> root = new osg::Group;
    
        /*// read the scene from the list of file specified command line args.
        osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments);
        // if not loaded assume no arguments passed in, try use default mode instead.
        if (!loadedModel) loadedModel = osgDB::readNodeFile("cow.osg");
        // if no model has been successfully loaded report failure.
        if (!loadedModel)
        {
            std::cout << arguments.getApplicationName() << ": No data loaded" << std::endl;
            return 1;
        }
        root->addChild(loadedModel);
        */
    
        std::string dataPath = ".";
        if (argc>1)
        {
            std::cout << argv[1];
            dataPath = argv[1];
        }
        dataPath += "\Data\";
        osgDB::DirectoryContents dirNames = osgDB::getDirectoryContents(dataPath);
        for each (std::string dir in dirNames)
        {
            if (dir.find(".") != std::string::npos)
                continue;
            std::string osgbFile = dataPath + dir + "\"+ dir+".osgb";
            root->addChild(osgDB::readNodeFile(osgbFile));
        }
        // pass the loaded scene graph to the viewer.
        viewer.setSceneData(root.get());
    
        // add the state manipulator
        viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
        // add the thread model handler
        viewer.addEventHandler(new osgViewer::ThreadingHandler);
        // add the window size toggle handler
        viewer.addEventHandler(new osgViewer::WindowSizeHandler);
        // add the stats handler
        viewer.addEventHandler(new osgViewer::StatsHandler);
        // add the help handler
        viewer.addEventHandler(new osgViewer::HelpHandler(arguments.getApplicationUsage()));
        // add the record camera path handler
        viewer.addEventHandler(new osgViewer::RecordCameraPathHandler);
        // add the LOD Scale handler
        viewer.addEventHandler(new osgViewer::LODScaleHandler);
        // add the screen capture handler
        viewer.addEventHandler(new osgViewer::ScreenCaptureHandler);
    
        // create the windows and run the threads.
        viewer.realize();
    
        return viewer.run();
    }
  • 相关阅读:
    (转)Quick Tip: Provisioning Web Parts to a Page(添加web part到page上,)
    解决sharepoint 2010浏览器在线浏览Word出错(非原创)
    转:部署带webpart的网页(Deploy a Page using a Feature)
    单点登录到sharepoint
    Feature Base On WebApp
    Create a New Document Using Office Web Apps
    学校合并与数组合并
    DNN拟合曲线
    使用tf.keras.layers.Layer自定义神经网络的层
    numpy
  • 原文地址:https://www.cnblogs.com/coolbear/p/7095089.html
Copyright © 2011-2022 走看看