OgreBase.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #include "OgreBase.h"
  2. #include <OgreFontManager.h>
  3. Ogre::Root* root;
  4. Ogre::RenderWindow* window;
  5. std::vector< Ogre::Entity* > entitys;
  6. Ogre::Camera *camera;
  7. DisplayFrameListener *frame_listener;
  8. void
  9. InitializeOgreBase( const Ogre::String& name )
  10. {
  11. Ogre::LogManager* log_manager = new Ogre::LogManager();
  12. log_manager->createLog( "q-gears.log", true, true );
  13. log_manager->getDefaultLog()->setLogDetail( ( Ogre::LoggingLevel )3 );
  14. Ogre::String ressource_cfg("");
  15. Ogre::String plugins_cfg("");
  16. Ogre::String dyn_lib_ext("");
  17. Ogre::String render_system("");
  18. #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
  19. dyn_lib_ext = ".dll";
  20. #else // Assume Linux for now
  21. dyn_lib_ext = ".so";
  22. #endif
  23. #ifdef NDEBUG
  24. ressource_cfg = "resources.cfg";
  25. plugins_cfg = "plugins.cfg";
  26. render_system = "./RenderSystem_GL" + dyn_lib_ext;
  27. #else
  28. ressource_cfg = "resources_d.cfg";
  29. plugins_cfg = "plugins_d.cfg";
  30. render_system = "./RenderSystem_GL_d" + dyn_lib_ext;
  31. #endif
  32. // init root early
  33. root = new Ogre::Root( plugins_cfg );
  34. // set up resources
  35. // Load resource paths from config file
  36. Ogre::ConfigFile cf;
  37. cf.load( ressource_cfg );
  38. // Go through all sections & settings in the file
  39. Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
  40. Ogre::String secName, typeName, archName;
  41. Ogre::ResourceGroupManager &res_gm( Ogre::ResourceGroupManager::getSingleton() );
  42. while (seci.hasMoreElements())
  43. {
  44. secName = seci.peekNextKey();
  45. Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
  46. Ogre::ConfigFile::SettingsMultiMap::iterator i;
  47. for (i = settings->begin(); i != settings->end(); ++i)
  48. {
  49. typeName = i->first;
  50. archName = i->second;
  51. res_gm.addResourceLocation( archName, typeName, secName, true );
  52. }
  53. }
  54. // configure
  55. // Show the configuration dialog and initialise the system
  56. // You can skip this and use root.restoreConfig() to load configuration
  57. // settings if you were sure there are valid ones saved in ogre.cfg
  58. if( !root->restoreConfig() && !root->showConfigDialog() )
  59. {
  60. root->setRenderSystem( root->getAvailableRenderers()[ 0 ] );
  61. }
  62. root->initialise( false );
  63. Ogre::NameValuePairList misc;
  64. misc[ "title" ] = name;
  65. window = root->createRenderWindow( "QGearsWindow", 800, 600, false, &misc );
  66. // initialize resource
  67. Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "./", "FileSystem", "General" );
  68. Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "./exported", "FileSystem", "General" );
  69. Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
  70. Ogre::SceneManager* scene_manager;
  71. Ogre::Viewport* viewport;
  72. Ogre::FontManager* fmgr = new Ogre::FontManager;
  73. Ogre::OverlayManager* overlay = new Ogre::OverlayManager();
  74. frame_listener = new DisplayFrameListener( window );
  75. root->addFrameListener( frame_listener );
  76. scene_manager = root->createSceneManager( Ogre::ST_GENERIC, "Scene" );
  77. scene_manager->clearScene();
  78. scene_manager->setAmbientLight( Ogre::ColourValue( 0.5, 0.5, 0.5 ) );
  79. Ogre::Light* directionalLight = scene_manager->createLight("directionalLight");
  80. directionalLight->setType( Ogre::Light::LT_DIRECTIONAL );
  81. directionalLight->setDiffuseColour( Ogre::ColourValue( 0.5, 0.5, 0.5) );
  82. directionalLight->setSpecularColour( Ogre::ColourValue( 0.5, 0.5, 0.5) );
  83. directionalLight->setDirection( Ogre::Vector3( 0, 0, -1 ) );
  84. camera = scene_manager->createCamera( "Camera" );
  85. camera->setNearClipDistance( 0.01f );
  86. camera->setPosition( 0, 5, 10 );
  87. camera->lookAt( 0, 0, 0 );
  88. viewport = window->addViewport( camera );
  89. viewport->setBackgroundColour( Ogre::ColourValue( 0.0f, 0.4f, 0.0f ) );
  90. camera->setAspectRatio( Ogre::Real( viewport->getActualWidth() ) / Ogre::Real( viewport->getActualHeight() ) );
  91. LOGGER = new Logger( "game.log" );
  92. }
  93. void
  94. DeinitializeOgreBase()
  95. {
  96. delete LOGGER;
  97. delete root;
  98. delete frame_listener;
  99. }