void MYGUIManager::drawImplementation( osg::RenderInfo& renderInfo ) const { unsigned int contextID = renderInfo.getContextID(); if ( !_initialized ) { MYGUIManager* constMe = const_cast<MYGUIManager*>(this); constMe->_platform = new MyGUI::OpenGLPlatform; constMe->_platform->initialise( constMe ); constMe->setupResources(); constMe->_gui = new MyGUI::Gui; constMe->_gui->initialise( _resourceCoreFile ); constMe->initializeControls(); osg::ref_ptr<osgViewer::GraphicsWindow> gw; if (_gw.lock(gw)) { gw->useCursor(_useHWCursor); } MyGUI::PointerManager& manager = MyGUI::PointerManager::getInstance(); manager.setVisible(!_useHWCursor); manager.eventChangeMousePointer += MyGUI::newDelegate(constMe, &MYGUIManager::notifyChangeMousePointer); constMe->_activeContextID = contextID; constMe->_initialized = true; } else if ( contextID==_activeContextID ) { osg::State* state = renderInfo.getState(); state->disableAllVertexArrays(); state->disableTexCoordPointer( 0 ); glPushMatrix(); glPushAttrib( GL_ALL_ATTRIB_BITS ); if ( _platform ) { updateEvents(); _platform->getRenderManagerPtr()->drawOneFrame(); } glPopAttrib(); glPopMatrix(); } }
void MYGUIManager::drawImplementation( osg::RenderInfo& renderInfo ) const { MYGUIManager* constMe = const_cast<MYGUIManager*>(this); unsigned int contextID = renderInfo.getContextID(); if ( !_initialized ) { constMe->_platform = new MyOpenGLPlatform; constMe->_platform->initialise( constMe ); constMe->setupResources(); constMe->_gui = new MyGUI::Gui; constMe->_gui->initialise( _resourceCoreFile ); constMe->initializeControls(); constMe->_activeContextID = contextID; constMe->_initialized = true; } else if ( contextID==_activeContextID ) { osg::State* state = renderInfo.getState(); state->disableAllVertexArrays(); state->disableTexCoordPointer( 1 ); glPushMatrix(); glPushAttrib( GL_ALL_ATTRIB_BITS ); if ( _platform ) { constMe->setIntersectionPoint(getIntersectionPoint(),true); constMe->lock(); updateEvents(); _platform->getMyRenderManagerPtr()->drawOneFrame(); constMe->unlock(); } glPopAttrib(); glPopMatrix(); state->dirtyAllVertexArrays(); state->dirtyTexCoordPointer(1); state->dirtyAllAttributes(); } }