OGRE--文件進(jìn)度條的實(shí)現(xiàn)
今天只是粗略的看了一下ogre中關(guān)于顯示加載文件進(jìn)度條的實(shí)現(xiàn).
在ogre中有一個(gè)資源管理器ResourceGroupManager, 該資源管理器負(fù)責(zé)文件的加載,也負(fù)責(zé)文家的加載進(jìn)度的通知.其文件加載的進(jìn)度的實(shí)現(xiàn)如下:
1.ogre提供了一個(gè)叫ResourceGroupListener的監(jiān)聽器, 客戶端需要繼承該類,然后通過覆蓋start()的虛擬函數(shù)進(jìn)行一些初始化工作, 在start()中需要調(diào)用ResourceGroupManager::getSingleton().addResourceGroupListener(this); 來通知資源管理器自己需要監(jiān)聽資源加載的進(jìn)度
2.完成了所有文件的加載以后,資源管理器會(huì)調(diào)用監(jiān)聽器的一個(gè)finish()的虛擬方法,客戶端覆蓋該方法,然后調(diào)用ResourceGroupManager::getSingleton().removeResourceGroupListener(this);通知資源管理器去除監(jiān)聽
3.ResourceGroupListener監(jiān)聽器中有很多個(gè)虛擬函數(shù)負(fù)責(zé)各個(gè)資源的加載情況,比如說:resourceGroupScriptingStarted(), resourceGroupScriptingEnded