Minimal Application Using Custom Main Loop
If you have any comments let me know. This code example is briefly discussed here http://www.ogre3d.org/phpBB2/viewtopic.php?t=27924.
Copy to clipboard
#include <Ogre.h> using namespace Ogre; void initResources(){ ResourceGroupManager &resources=ResourceGroupManager::getSingleton(); resources.addResourceLocation("data","FileSystem"); resources.initialiseAllResourceGroups(); } Root* initOgre(){ Root* root = new Root; #if defined(_DEBUG) root->loadPlugin("C:/OGRESDK/bin/debug/RenderSystem_GL_d.dll"); //Linux //root->loadPlugin("/usr/local/lib/OGRE/RenderSystem_GL_d"); #else root->loadPlugin("C:/OGRESDK/bin/release/RenderSystem_GL.dll"); //Linux //root->loadPlugin("/usr/local/lib/OGRE/RenderSystem_GL"); #endif const Ogre::RenderSystemList& rs = root->getAvailableRenderers(); if(&rs && rs.size()&&rs.at(0)->getName().compare("RenderSystem_GL")){ RenderSystem * r=rs.at(0); root->setRenderSystem(r); r->setConfigOption("Full Screen","No"); r->setConfigOption("Video Mode","800 x 600 @ 16-bit colour"); }else{ exit(1); } initResources(); return root; } Camera* createCamera(SceneManager *sceneMgr,RenderWindow *window){ Camera* cam = sceneMgr->createCamera("SimpleCamera"); cam->setPosition(Vector3(0.0f,0.0f,500.0f)); cam->lookAt(Vector3(0.0f,0.0f,0.0f)); cam->setNearClipDistance(5.0f); cam->setFarClipDistance(5000.0f); Viewport* v = window->addViewport(cam); v->setBackgroundColour(ColourValue(0.5,0.5,0.5)); cam->setAspectRatio(Real(v->getActualWidth())/v->getActualHeight()); return cam; } #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h" INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT){ #else int main(int argc, char **argv){ #endif Root *root=initOgre(); RenderWindow* window = root->initialise(true, "Simple Ogre App"); SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC); Camera *cam=createCamera(sceneMgr,window); sceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(cam); int running=1000; while(running--) { WindowEventUtilities::messagePump(); root->renderOneFrame(); printf("%d\n",running); } delete root; return 0; }