//create root
Ogre::Root* rt=new Ogre::Root("C:\\workspace\\ogre\\ogre4vs2010\\MyOgre\\Debug\\plugins.cfg",
"C:\\workspace\\ogre\\ogre4vs2010\\MyOgre\\Debug\\ogre.cfg",
"C:\\workspace\\ogre\\ogre4vs2010\\MyOgre\\Debug\\ogre.log");
if(!rt->restoreConfig())
rt->showConfigDialog();
//create window
Ogre::RenderWindow* rw=rt->initialise(true);
size_t winHandler=0;
rw->getCustomAttribute("WINDOW",&winHandler);
rw->setAutoUpdated(true);
//create input system
std::ostringstream winHandlerStr;
winHandlerStr<<winHandler;
OIS::ParamList pl;
pl.insert(std::make_pair("WINDOW",winHandlerStr.str()));
OIS::InputManager* im=OIS::InputManager::createInputSystem(pl);
/**
OIS::Mouse* mouse=static_cast<OIS::Mouse*>(im->createInputObject(OIS::OISMouse,true));
OIS::Keyboard* mKeyboard=static_cast<OIS::Keyboard*>(im->createInputObject(OIS::OISKeyboard,true));
mouse->capture();
mKeyboard->capture();
mouse->setEventCallback(NULL);
mKeyboard->setEventCallback(NULL);
const OIS::MouseState ms=mouse->getMouseState();
ms.width=rw->getWidth();
ms.height=rw->getHeight();
rt->addFrameListener(NULL);
Ogre::WindowEventUtilities::addWindowEventListener(rw,NULL);
**/
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
"C:\\workspace\\ogre\\ogre4vs2010\\OgreSDK_vc10_v1-8-1\\media\\models"
,"FileSystem"
,"models");
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
"C:\\workspace\\ogre\\ogre4vs2010\\OgreSDK_vc10_v1-8-1\\media\\materials\\scripts"
,"FileSystem"
,"materials");
Ogre::OverlayManager& om=Ogre::OverlayManager::getSingleton();
Ogre::Overlay* ol=om.create("test");
Ogre::OverlayContainer* testPanel=(Ogre::OverlayContainer*)om.createOverlayElement("Panel","testPanel");
ol->add2D(testPanel);
ol->setZOrder(10);
ol->show();
Ogre::Overlay* overlay=om.create("overlay");
overlay->setZOrder(100);
Ogre::OverlayContainer* ole=(Ogre::OverlayContainer*)om.createOverlayElement("Panel","Backdrop");
overlay->add2D(ole);
overlay->show();
rw->removeAllViewports();
//create scenemanager and camera
Ogre::SceneManager* sm=rt->createSceneManager(Ogre::ST_GENERIC,"testScence");
Ogre::Camera* oc=sm->createCamera("testCamera");
oc->setNearClipDistance(5);
oc->setPosition(-300,0,0);
oc->lookAt(100,0,0);
rw->addViewport(oc);
//save camera status
Ogre::NameValuePairList state;
state["CameraPosition"] = Ogre::StringConverter::toString(oc->getPosition());
state["CameraOrientation"] = Ogre::StringConverter::toString(oc->getOrientation());
oc->setPosition(Ogre::StringConverter::parseVector3(state["CameraPosition"]));
oc->setOrientation(Ogre::StringConverter::parseQuaternion(state["CameraOrientation"]));
/**?
Ogre::Viewport* mainVP = oc->getViewport();
const Ogre::String& curMaterialScheme = mainVP->getMaterialScheme();
if (curMaterialScheme == Ogre::MaterialManager::DEFAULT_SCHEME_NAME)
{
mainVP->setMaterialScheme(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
}
else if (curMaterialScheme == Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME)
{
mainVP->setMaterialScheme(Ogre::MaterialManager::DEFAULT_SCHEME_NAME);
}
**/
//create entity and attach to scence node
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
Ogre::Entity* et=sm->createEntity("robot.mesh");
//Ogre::ResourceGroupManager::getSingleton().create
//et->setMaterial();
Ogre::SceneNode* node=sm->getRootSceneNode()->createChildSceneNode(Ogre::Vector3(0,0,0));
node->attachObject(et);
node->roll(Ogre::Radian(0.9));
node->scale(1,1,3);
Ogre::Entity* et2=sm->createEntity("ogrehead.mesh");
Ogre::SceneNode* node2=sm->getRootSceneNode()->createChildSceneNode(Ogre::Vector3(0,0,100));
node2->attachObject(et2);
//set light
sm->setAmbientLight(Ogre::ColourValue(0.5,0.5,0.5));
//start rendering
rt->startRendering();
while(1){
}
//destroy input system
/**
im->destroyInputObject(mouse);
im->destroyInputObject(mkeyBoard);
OIS::InputManager::destroyInputSystem(im);
im=0;
**/
//clear scene and destroy it
sm->clearScene();
rt->destroySceneManager(sm);
//unload resource
Ogre::ResourceGroupManager::ResourceManagerIterator resMgrs =
Ogre::ResourceGroupManager::getSingleton().getResourceManagerIterator();
while (resMgrs.hasMoreElements())
{
resMgrs.getNext()->unloadUnreferencedResources();
}
}
catch (Ogre::Exception& e)
{
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBoxA(NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
#else
std::cerr << "An exception has occurred: " << e.getFullDescription().c_str() << std::endl;
#endif
}