VC3DGraphicsWindowQt
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 }
QQ 3087438119