查看: 591|回复: 0

关于摄像机和run()函数

[复制链接]

该用户从未签到

发表于 2016-12-23 10:33:53 | 显示全部楼层 |阅读模式
刚接触OSG不久,最近疑惑一个问题,就是自己创建了一个摄像机,设置到场景中,然后再调用viewer的run函数来进行渲染,结果窗口一直不显示,如果不添加自己创建的摄像机,就可以正常显示,不知道这是什么原因,代码:
        //创建摄像机
        osg::Camera* camera = createCamera( 50, 50, 640, 480 );
        m_viewer.setCamera( camera );

        //添加数据到场景
        m_viewer.setSceneData(m_pRoot);

        m_viewer.run();



//创建摄像机
osg::Camera* ViewerWidget::createCamera(int x, int y, int w, int h)
{
        osg:isplaySettings* ds = osg::DisplaySettings::instance().get();
       
        osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
        traits->windowDecoration = false;
        traits->x = x;
        traits->y = y;
        traits->width = w;
        traits->height = h;
        traits->doubleBuffer = true;
        traits->samples = 8;
       
        osg::ref_ptr<osg::Camera> camera = new osg::Camera;
        camera->setGraphicsContext( new osgQt::GraphicsWindowQt(traits.get()) );
        camera->setClearColor( osg::Vec4(0.2, 0.2, 0.6, 1.0) );
        camera->setViewport( new osg::Viewport(0, 0, traits->width, traits->height) );
        camera->setProjectionMatrixAsPerspective( 30.0f, static_cast<double>(traits->width) /
                static_cast<double>(traits->height), 1.0f, 10000.0f );
       
        return camera.release();
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表