History: MinimalPracticalApplication
Source of version: 5 (current)
Copy to clipboard
!!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].
{CODE(wrap="1", colors="c++")} #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;
} {CODE}