OGRE 3D: Создание игры на OGRЕ. Часть 1.
Внимание! Этот документ ещё не опубликован.
Автор: Дмитрий Перевощиков
Оригинал: Мэтью Касперсен( http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/… -ogre-3d.aspx )
OGRE 3D - один из лучших бесплатных движков. На его основе было создано множество успешных коммерческих игр, у этого движка есть огромное активное сообщество, к тому же это действительно мощный графический движок. В этих обучающих статьях будет рассмотрено создание простого Shoot'em'up с использованием OGRE. Но сначала нужно создать базовую основу программы.
EngineManager.h
/* * OgreEngineManager.h * * Created on: 18/12/2009 * Author: Matthew Casperson */ #ifndef OGREENGINEMANAGER_H_ #define OGREENGINEMANAGER_H_ #include "memory" #include "string" #include "map" #include "OGRE/Ogre.h" #include "OIS/OIS.h" #include "ResourceLocationDefinition.h" //делает жизнь немного легче ;) #define ENGINEMANAGER OgreEngineManager::Instance() // определяет пространство имен для огра. using namespace Ogre; /** Контролирует движок */ class OgreEngineManager : public WindowEventListener, public FrameListener { public: /** Деструктор */ ~OgreEngineManager( ); /** Singelton access @return The single instance of this class */ static OgreEngineManager & Instance( ) { static OgreEngineManager instance; return instance; } /** Инициализация движка. @param pluginFileName Файл с плагинами @param configFileName Настройки @param logFileName Лог */ bool Startup( const std::string pluginFileName, const std::string configFileName, const std::string logFileName); /** дык же */ void Shutdown( ); /** Выгрузка OIS */ void ShutdownInput( ); /** Получение окна программы @return The render window */ RenderWindow * GetRenderWindow( ) const { return window; } /** Получение корневого класса @return The Ogre root */ Root * GetRoot( ) const { return root.get( ); } /** Получение OIS @return The OIS inoput manager */ OIS::InputManager* GetInputManager( ) const { return mInputManager; } /** Клава @return The OIS keyboard */ OIS::Keyboard* GetKeyboard( ) const { return mKeyboard; } /** Грызун @return The OIS mouse */ OIS::Mouse* GetMouse( ) const { return mMouse; } /** Запуск программы */ void StartRenderLoop( ); /** Остановка */ void StopRenderLoop( ) {engineManagerRunning = false;} /** Получение пути к ресурсам */ void AddNewResourceLocation( const ResourceLocationDefinition& definition) {resourceLocationDefinitionVector.push_back( definition);} /** Вызывается при закрытии окна */ void windowClosed( RenderWindow* rw); /** Запуск рендера одного кадра */ bool frameStarted( const FrameEvent& evt); protected: /** Инициализация переменных */ OgreEngineManager( ); /** Загрузка ресурсов из файла */ void SetupResources( ); /** Выводит диалоговое окно с настройками */ bool Configure( ); /** Настройка ввода */ void SetupInputDevices( ); /// OGRE Root std::auto_ptr root; /// Default OGRE Camera Camera* genericCamera; /// OGRE RenderWIndow RenderWindow* window; /// запустился ли движок bool engineManagerRunning; /// ресуры ResourceLocationDefinitionVector resourceLocationDefinitionVector; //OIS OIS::InputManager* mInputManager; OIS::Mouse* mMouse; OIS::Keyboard* mKeyboard; }; #endif /* OGREENGINEMANAGER_H_ */
EngineManager.cpp
Конструктор используется для установки нулевого значения для переменных
/* * OgreEngineManager.cpp * * Created on: 18/12/2009 * Author: Matthew Casperson */ #include "iostream" #include "sstream" #include "OgreEngineManager.h" OgreEngineManager::OgreEngineManager() : root( NULL), genericCamera( NULL), window( NULL), engineManagerRunning( true) { } // деструктор оставляем пустым OgreEngineManager::~OgreEngineManager( ) { }
2 декабря 2010