以前的所有例子都用到了ExampleApplication,这一节终于脱离ExampleApplication。直接上代码。
int main(void)
{
ogre::root* root = new ogre::root("plugins_d.cfg");
if(!root ->showconfigdialog())
{
return -1;
}
ogre::renderwindow* window = root ->initialise(true, "ogre3dbeginnersguide");
ogre::scenemanager* scenemanager = root ->createscenemanager(ogre::st_generic);
ogre::camera* camera = scenemanager ->createcamera("camera");
camera ->setposition(ogre::vector3(0, 0, 50));
camera ->lookat(ogre::vector3(0, 0, 0));
camera ->setnearclipdistance(5);
ogre::viewport* viewport = window ->addviewport(camera);
viewport ->setbackgroundcolour(ogre::colourvalue(0.0, 0.0, 0.0));
camera ->setaspectratio(ogre::real(viewport ->getactualwidth()) / ogre::real(viewport ->getactualheight()));
ogre::configfile cf;
cf.load("resources_d.cfg");
ogre::configfile::sectioniterator sectioniter = cf.getsectioniterator();
ogre::string sectionname, typename, dataname;
while(sectioniter.hasmoreelements())
{
sectionname = sectioniter.peeknextkey();
ogre::configfile::settingsmultimap* settings = sectioniter.getnext();
ogre::configfile::settingsmultimap::iterator i;
for(i = settings ->begin(); i != settings ->end(); ++i)
{
typename = i ->first;
dataname = i ->second;
ogre::resourcegroupmanager::getsingleton().addresourcelocation(dataname, typename, sectionname);
}
}
ogre::resourcegroupmanager::getsingleton().initialiseallresourcegroups();
ogre::entity* ent = scenemanager ->createentity("sinbad.mesh");
scenemanager ->getrootscenenode() ->attachobject(ent);
root ->startrendering();
return 0;
}
当然还要包括头文件OIS.h和Ogre.h