加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VC3DGraphicsWindowQt

发布时间:2020-12-16 10:48:47 所属栏目:百科 来源:网络整理
导读:? VC3DGraphicsWindowQt::VC3DGraphicsWindowQt(QWidget* parent,Qt::WindowFlags f){ osg::DisplaySettings * ds = osg::DisplaySettings::instance(). get (); osg::setNotifyLevel(osg::NotifySeverity::FATAL); _traits = new osg::GraphicsContext::Tra

?

VC3DGraphicsWindowQt::VC3DGraphicsWindowQt(QWidget* parent,Qt::WindowFlags f)
{
    osg::DisplaySettings* ds = osg::DisplaySettings::instance().get();
    osg::setNotifyLevel(osg::NotifySeverity::FATAL);

    _traits = new osg::GraphicsContext::Traits();
    _traits->windowDecoration = false;
    _traits->x = 0;
    _traits->y = 0;
    _traits->width = 100;
    _traits->height = 100;
    _traits->doubleBuffer = true;
    if (ds)
    {
        _traits->alpha = ds->getMinimumNumAlphaBits();
        _traits->stencil = ds->getMinimumNumStencilBits();
        _traits->sampleBuffers = ds->getMultiSamples();
        _traits->samples = ds->getNumMultiSamples();
    }
    if (parent)
    {
        _traits->width = parent->width();
        _traits->height = parent->height();
    }

    // create widget if it does not exist
    if (!m_opengl_widget)
    {
        // WindowFlags
        Qt::WindowFlags flags = f | Qt::Widget;
        // create widget
        m_opengl_widget = new VC3DQtOSGWidget(parent,flags);
    }

    m_opengl_widget->setMouseTracking(true);
    m_opengl_widget->setFocusPolicy(Qt::WheelFocus);
    m_opengl_widget->setGraphicsWindow(this);
    useCursor(_traits->useCursor);

    // initialize State
    setState(new osg::State);
    getState()->setGraphicsContext(this);

    // initialize contextID
    if (_traits.valid() && _traits->sharedContext.valid())
    {
        getState()->setContextID(_traits->sharedContext->getState()->getContextID());
        incrementContextIDUsageCount(getState()->getContextID());
    }
    else
    {
        getState()->setContextID(osg::GraphicsContext::createNewContextID());
    }

    // make sure the event queue has the correct window rectangle size and input range
#if (OPENSCENEGRAPH_MAJOR_VERSION == 3) && (OPENSCENEGRAPH_MINOR_VERSION == 2)
    getEventQueue()->syncWindowRectangleWithGraphcisContext();
#else
    getEventQueue()->syncWindowRectangleWithGraphicsContext();
#endif
}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读