bool OgreSubsystem::StartOgre(Ogre::String const & name, Ogre::String const & hwnd, Ogre::String const & mainhwnd) { m_name = name; m_hwnd = hwnd; m_main_hwnd = mainhwnd; try { SETTINGS.loadSettings(SSETTING("Config Root", "")+"RoR.cfg"); } catch(Ogre::Exception& e) { Ogre::String url = "https://rigsofrods.github.io/en/docs/errors/index.html#" + TOSTRING(e.getNumber()); ErrorUtils::ShowOgreWebError(_L("A fatal exception has occured!"), ANSI_TO_UTF(e.getFullDescription()), ANSI_TO_UTF(url)); ErrorUtils::ShowStoredOgreWebErrors(); exit(1); } Ogre::String logFilename = SSETTING("Log Path", "") + name + Ogre::String(".log"); Ogre::String pluginsConfig = SSETTING("plugins.cfg", "plugins.cfg"); Ogre::String ogreConfig = SSETTING("ogre.cfg", "ogre.cfg"); m_ogre_root = new Ogre::Root("", ogreConfig, logFilename); // load plugins manually LoadOgrePlugins(pluginsConfig); // configure RoR Configure(); m_viewport = m_render_window->addViewport(nullptr); m_viewport->setBackgroundColour(Ogre::ColourValue(0.5f, 0.5f, 0.5f, 1.0f)); m_viewport->setCamera(nullptr); m_viewport->setBackgroundColour(Ogre::ColourValue::Black); Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); m_timer = new Ogre::Timer(); m_timer->reset(); m_render_window->setActive(true); return true; }
void Main::setupRenderSystem() { Ogre::String renderer = ""; Ogre::String vsync = ""; Ogre::String aa = ""; Ogre::String fullscreen = ""; Ogre::String width = ""; Ogre::String height = ""; Ogre::String perfhud = ""; for (std::vector<KeyVal>::iterator i = mSettings["Graphics"].begin(); i != mSettings["Graphics"].end(); i++) { if (i->Key == "Renderer") renderer = i->Val; if (i->Key == "AA") aa = i->Val; if (i->Key == "VSync") vsync = i->Val; if (i->Key == "Fullscreen") fullscreen = i->Val; if (i->Key == "ResolutionWidth") width = i->Val; if (i->Key == "ResolutionHeight") height = i->Val; if (i->Key == "NVPerfHUD") perfhud = i->Val; } #if _DEBUG mRoot->loadPlugin("RenderSystem_Direct3D9_d"); mRoot->loadPlugin("RenderSystem_GL_d"); #else mRoot->loadPlugin("RenderSystem_Direct3D9"); mRoot->loadPlugin("RenderSystem_GL"); #endif LoadOgrePlugins(); /*for (Ogre::Root::PluginInstanceList::const_iterator i = mRoot->getInstalledPlugins().begin(); i != mRoot->getInstalledPlugins().end(); i++) { if ((*i)->getName() == "AviSaver") { } }*/ auto pRenderSystem = mRoot->getAvailableRenderers().begin(); Ogre::RenderSystem *pSelectedRenderSystem; pSelectedRenderSystem = *pRenderSystem; while (pRenderSystem != mRoot->getAvailableRenderers().end()) { if ((*pRenderSystem)->getName() == renderer) { mRenderSystem = *pRenderSystem; break; } pRenderSystem++; } mRoot->setRenderSystem(mRenderSystem); mRenderSystem->setConfigOption("Full Screen", fullscreen); //mRenderSystem->setConfigOption("Capture frames to AVI file (capture.avi)", "Yes"); mRenderSystem->setConfigOption("VSync", vsync); mRenderSystem->setConfigOption("FSAA", aa); if (renderer == "Direct3D9 Rendering Subsystem") { mRenderSystem->setConfigOption("Allow NVPerfHUD", perfhud); Log::Instance().LogMessage("setup Rendersystem: " + width + " " + height); mRenderSystem->setConfigOption("Video Mode", width + " x " + height + " @ " + "32" + "-bit colour" ); } else { mRenderSystem->setConfigOption("Video Mode", width + " x " + height); mRenderSystem->setConfigOption("Colour Depth", "32"); } }