History: BasicTutorial6SourceOgre20
Source of version: 1 (current)
Copy to clipboard
{CODE(colors="c++")}#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;
}
}
}{CODE}