的笔记

随时随地编辑

overlay加载进度条笔记

这里就不贴代码了,似乎前辈讲过无数遍,只谈思想:
(一句话说明ogre资源加载滚动条的实现)注册资源加载监听消息、在其中处理进度并强制RenderWindow重绘;在开始加载资源之前首先加载进度条使用到的overlay以便渲染滚动窗口,然后:关闭所有渲染、添加overlay渲染、加载所有资源(这个时候监听消息会触发滚动条重绘)、加载完后销毁进度条窗口。

关键代码:

class LoadingBar : public ResourceGroupListener

 

    LoadingBar* loadingBar = new LoadingBar();

    loadingBar
->start(mWindow, 110.75);

    
// Turn off rendering of everything except overlays
    mSceneMgr->clearSpecialCaseRenderQueues();
    mSceneMgr
->addSpecialCaseRenderQueue(RENDER_QUEUE_OVERLAY);
    mSceneMgr
->setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE);

    
// Initialise the rest of the resource groups, parse scripts etc
    ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
    ResourceGroupManager::getSingleton().loadResourceGroup(
        ResourceGroupManager::getSingleton().getWorldResourceGroupName(),
        
falsetrue);

    
// Back to full rendering
    mSceneMgr->clearSpecialCaseRenderQueues();
    mSceneMgr
->setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE);

    loadingBar
->finish();
    delete loadingBar;

另外要注意从本地加载overlay如果编码有问题,会出现加载失败的问题,这个还是跟踪到代码才发现,大概表现是解析overlay的时候,将整个文本文件的txt内容当成一个overlay加到map中去了。这个真搞人啊,浪费半天。

posted on 2011-04-17 14:59 的笔记 阅读(378) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理