最简单让OGRE去渲染场景的方法就是调用ROOT的startRendering函数
root->starterndering();注意调用这个开始渲染的函数,是在
mRoot = new Root();
setupResources();
bool carryOn = configure();
if (!carryOn) return false;
chooseSceneManager();
createCamera();
createViewports();
TextureManager::getSingleton().setDefaultNumMipmaps(5);
createResourceListener();
loadResources();
createScene();
createFrameListener();等创建场景成功后再调用的。
这个会引起OGRE永不停止的渲染场景。退出可能是因为关闭了窗口或者注册的frame listener返回了false。结束渲染循环的可以调用Root::getsingleton().queueEndRendering(),一般还是用frame listener返回false。在root的startrendering中有这样的语句
while( !mQueuedEnd )
{
//Allow platform to pump/create/etc messages/events once per frame
mPlatformManager->messagePump(mAutoWindow);
if (!renderOneFrame())
break;
}
QueuEndRendering通过设置mQueuedEnd = true 来实现,结束帧监听器的。FrameListener是唯一一个启用startRendering后可以调用自己代码的地方,创建新的frameListener后,记得要root->addFrameListener(listenername);注册一下。实际上这里是root 中有个FrameListener的Set,利用set 的inse