#include "TestApp.h" #include "OgreConfigFile.h" #include "OgreTextureManager.h" #include "OgreCamera.h" #include "OgreRenderWindow.h" #include "OgreViewport.h" #include "OgreEntity.h" #include "OgreWindowEventUtilities.h" #include "OgreLight.h" #include "Compositor/OgreCompositorManager2.h" TestApp::TestApp(void) : mRoot(0) { } TestApp::~TestApp(void) { delete mRoot; } void TestApp::go(void) { #ifdef _DEBUG Ogre::String mPluginsCfg = "plugins_d.cfg"; Ogre::String mResourceCfg = "resources_d.cfg"; #else Ogre::String mPluginsCfg = "plugins.cfg"; Ogre::String mResourceCfg = "resources.cfg"; #endif mRoot = new Ogre::Root( mPluginsCfg ); Ogre::ConfigFile cf; cf.load( mResourceCfg ); Ogre::ConfigFile::SectionIterator secIter = cf.getSectionIterator(); Ogre::String secName, typeName, archName; while( secIter.hasMoreElements() ) { secName = secIter.peekNextKey(); Ogre::ConfigFile::SettingsMultiMap * settings = secIter.getNext(); Ogre::ConfigFile::SettingsMultiMap::iterator iter; for( iter = settings->begin(); iter != settings->end(); iter++ ) { typeName = iter->first; archName = iter->second; Ogre::ResourceGroupManager::getSingleton().addResourceLocation( archName, typeName, secName ); } } if( !mRoot->showConfigDialog() ) { return; } Ogre::RenderWindow * mWindow; mWindow = mRoot->initialise( true, "Ogre 2.0 Test" ); Ogre::TextureManager::getSingleton().setDefaultNumMipmaps( Ogre::MIP_UNLIMITED ); Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); Ogre::SceneManager * mSceneMgr; mSceneMgr = mRoot->createSceneManager( "DefaultSceneManager", 3, Ogre::INSTANCING_CULLING_SINGLETHREAD ); Ogre::Camera * mCamera; mCamera = mSceneMgr->createCamera( "Camera" ); mCamera->setPosition( Ogre::Vector3( 0, 0, 80 ) ); mCamera->lookAt( Ogre::Vector3( 0, 0, 0 ) ); mCamera->setNearClipDistance( 5 ); mCamera->setAutoAspectRatio( true ); Ogre::CompositorManager2 *compositorManager = mRoot->getCompositorManager2(); const Ogre::IdString workspaceName( "Workspace" ); if( !compositorManager->hasWorkspaceDefinition( workspaceName ) ) { compositorManager->createBasicWorkspaceDef( workspaceName, Ogre::ColourValue::Black ); } compositorManager->addWorkspace( mSceneMgr, mWindow, mCamera, workspaceName, true ); Ogre::Entity * ogreHead = mSceneMgr->createEntity( "ogrehead.mesh" ); Ogre::SceneNode * headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); headNode->attachObject( ogreHead ); mSceneMgr->setAmbientLight( Ogre::ColourValue( 0.5, 0.5, 0.5 ) ); Ogre::SceneNode * lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); lightNode->setPosition( Ogre::Vector3( 20, 80, 50 ) ); Ogre::Light * light = mSceneMgr->createLight(); lightNode->attachObject( light ); while( true ) { Ogre::WindowEventUtilities::messagePump(); if( mWindow->isClosed() ) { break; } if( !mRoot->renderOneFrame() ) { break; } } }