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();
    }
}
示例#2
0
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();
    }
}