void initialise(Ogre::RenderWindow* _window, Ogre::SceneManager* _scene) { MYGUI_PLATFORM_ASSERT(!mIsInitialise, getClassTypeName() << " initialised twice"); MYGUI_PLATFORM_LOG(Info, "* Initialise: " << getClassTypeName()); mColorBlendMode.blendType = Ogre::LBT_COLOUR; mColorBlendMode.source1 = Ogre::LBS_TEXTURE; mColorBlendMode.source2 = Ogre::LBS_DIFFUSE; mColorBlendMode.operation = Ogre::LBX_MODULATE; mAlphaBlendMode.blendType = Ogre::LBT_ALPHA; mAlphaBlendMode.source1 = Ogre::LBS_TEXTURE; mAlphaBlendMode.source2 = Ogre::LBS_DIFFUSE; mAlphaBlendMode.operation = Ogre::LBX_MODULATE; mTextureAddressMode.u = Ogre::TextureUnitState::TAM_CLAMP; mTextureAddressMode.v = Ogre::TextureUnitState::TAM_CLAMP; mTextureAddressMode.w = Ogre::TextureUnitState::TAM_CLAMP; mSceneManager = nullptr; mWindow = nullptr; mUpdate = false; mRenderSystem = nullptr; mActiveViewport = 0; Ogre::Root* root = Ogre::Root::getSingletonPtr(); if (root != nullptr) setRenderSystem(root->getRenderSystem()); setRenderWindow(_window); setSceneManager(_scene); // ADDED sh::MaterialInstance* mat = sh::Factory::getInstance().getMaterialInstance("MyGUI/NoTexture"); sh::Factory::getInstance()._ensureMaterial("MyGUI/NoTexture", "Default"); mVertexProgramNoTexture = static_cast<sh::OgreMaterial*>(mat->getMaterial())->getOgreTechniqueForConfiguration("Default")->getPass(0) ->getVertexProgram()->_getBindingDelegate(); mat = sh::Factory::getInstance().getMaterialInstance("MyGUI/OneTexture"); sh::Factory::getInstance()._ensureMaterial("MyGUI/OneTexture", "Default"); mVertexProgramOneTexture = static_cast<sh::OgreMaterial*>(mat->getMaterial())->getOgreTechniqueForConfiguration("Default")->getPass(0) ->getVertexProgram()->_getBindingDelegate(); mat = sh::Factory::getInstance().getMaterialInstance("MyGUI/NoTexture"); sh::Factory::getInstance()._ensureMaterial("MyGUI/NoTexture", "Default"); mFragmentProgramNoTexture = static_cast<sh::OgreMaterial*>(mat->getMaterial())->getOgreTechniqueForConfiguration("Default")->getPass(0) ->getFragmentProgram()->_getBindingDelegate(); mat = sh::Factory::getInstance().getMaterialInstance("MyGUI/OneTexture"); sh::Factory::getInstance()._ensureMaterial("MyGUI/OneTexture", "Default"); mFragmentProgramOneTexture = static_cast<sh::OgreMaterial*>(mat->getMaterial())->getOgreTechniqueForConfiguration("Default")->getPass(0) ->getFragmentProgram()->_getBindingDelegate(); MYGUI_PLATFORM_LOG(Info, getClassTypeName() << " successfully initialized"); mIsInitialise = true; }
void ClientApplication::run() { Ogre::Root* root = mGraphicsManager->getRoot(); Ogre::RenderWindow* window = mGraphicsManager->getWindow(); root->getRenderSystem()->_initRenderTargets(); root->clearEventTimes(); boost::timer timer; while( !mShutdown ) { if( mShutdownRequested ) { mStateMachine->popTo( 0 ); mShutdown = true; } const Real elapsed = timer.elapsed(); timer.restart(); mEarlyUpdateSignal(); mEarlyFrameSignal( elapsed ); mUpdateSignal(); mFrameSignal( elapsed ); mLateUpdateSignal(); mLateFrameSignal( elapsed ); Ogre::WindowEventUtilities::messagePump(); // Render even when the window is inactive. if( window->isActive() ) { root->renderOneFrame(); } else if( window->isVisible() ) { root->renderOneFrame(); window->update(); #if DIVERSIA_PLATFORM == DIVERSIA_PLATFORM_WIN32 Sleep( ( 1.0 / 60.0 ) * 1000.0 ); #else usleep( ( 1.0 / 60.0 ) * 1000000.0 ); #endif } else if( !window->isActive() && !window->isVisible() ) { #if DIVERSIA_PLATFORM == DIVERSIA_PLATFORM_WIN32 Sleep( ( 1.0 / 60.0 ) * 1000.0 ); #else usleep( ( 1.0 / 60.0 ) * 1000000.0 ); #endif } } }
void init_render_sys() { m_root = new Ogre::Root(); m_root->setRenderSystem(m_root->getRenderSystemByName("OpenGL Rendering Subsystem")); m_root->initialise(false); m_frm = new wxFrame(0,-1,wxT("")); NameValuePairList a; a.insert(std::pair<String,String>("externalWindowHandle",StringConverter::toString( (size_t) m_frm->GetHandle() ))); RenderSystem *sys = m_root->getRenderSystem(); RenderWindow *m_ren = sys->_createRenderWindow(String("OgreRenderWindow_00"),1,1,false,&a); MaterialManager::getSingleton().initialise(); m_frm->Show(false); }