OgreBase.cpp 4.8 KB

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