MinimalPracticalApplication         This is a minimal application using it's own main loop and plugin loading

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.

#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; 
 }