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