zoukankan      html  css  js  c++  java
  • OSG_EXAMPLE:osgwindows[创建窗口]

    int main(int argc, char** argv)
    {
        osg::ArgumentParser arguments(&argc, argv);
        
        osg::ref_ptr<osg::Node> loadedModel = osgDB::readRefNodeFiles(arguments);
    
        std::string path = osgDB::getFilePath("");
    
        if(!loadedModel) 
            loadedModel = osgDB::readRefNodeFile("");
    
        if(!loadedModel)
        {
            std::cout << arguments.getApplicationName() << std::endl;
            return 1;
        }
    
        osgViewer::Viewr viewer;
        
        int xoffset = 40;
        int yoffset  = 40;
    
        // left window + left slave camera
        {
            osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
    
            traits->x = xoffset + 0;
            traits->y = yoffset + 0;
            traits->width = 600;
            traits->height = 480;
            traits->windowDecoration = true;
            traits->doubleBuffer = true;
            traits->sharedContext = 0;
            traits->readDISPLAY();
            traits->setUndefinedScreenDetailsToDefaultScreen();
    
            osg::ref_ptr<osg::GraphicsContext> gc = 
                    osg::GraphicsContext::createGraphicsContext(traits.get());
        
            osg::ref_ptr<osg::Camera> camera = new osg::Camera;
            camera->setGraphicsContext(gc.get());
            camera->setViewport(new osg::Viewport(0, 0, traits->width, traits->height));
    
            GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT;
            camera->setDrawBuffer(buffer);
            camera->setReadBuffer(buffer);
    
            viewer.addSlave(camera.get(), osg::Matrixd::translate(1.0, 0.0, 0.0), osg::Matrixd());
        }
    
        // right window + right slave camera
        {
            osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
            traits->x = xoffset + 600;
            traits->y = yoffset + 0;
            traits->width = 600;
            traits->height = 480;
            traits->windowDecoration = true;
            traits->doubleBuffer = true;
            traits->sharedContext = 0;    
            traits->readDISPLAY();
            traits->setUndefinedScreenDetailsToDefaultScreen();
    
            osg::ref_ptr<osg::GraphicsContext> gc 
                = osg::GraphicsContext::createGraphicsContext(traits.get());
    
            osg::ref_ptr<osg::Camera> camear = new osg::Camera;
            camera->setGraphicsContext(gc.get());
            camera->setViewport(new osg::Viewport(0.0, traits->width, traits->height));
            GLenum buffer = traits->doubleBuffer ? GL_BACK :GL_FRONT;
            camera->setDrawBuffer(buffer);
            camera->setReadBuffer(buffer);
    
            viewer.addSlave(camear.get(), osg::Matrixd::translate(-1.0, 0.0, 0.0), osg::Matrixd());
        }
    
        osgUtil::Optimizer optimizer;
        optimizer.optimize(loadedmodel);
    
        viewer.setSceneDat(loadedModel);
    
        return viewer.run();
    }
  • 相关阅读:
    客户端组建调用
    串口开发
    C/C++,系统知识考点
    API进程线程函数
    做WEB2.0网站可以参考的十九条规则
    javascript中动态添加事件!!
    常用正则表达式收集!
    CuteChat for Community Server 2.0 beta 3!
    发现一个下载.Text Skin 的好网站.
    如何控制Linux终端打印字符颜色和位置
  • 原文地址:https://www.cnblogs.com/k5bg/p/13098267.html
Copyright © 2011-2022 走看看