在OGRE內建的例子中有一個BSP的例子,該例子是為了示範BSP的。下面我們看一下BSP資源的載入以及在渲染時如何找到該資源進行渲染的過程。
我們都知道,OGRE中在檔案級所有的資源管理都是通過一系列設定檔來描述其定位的,BSP資源也不例外。首先,在setupResources中要載入BSP資源的配置資訊,就是下面兩行代碼,ConfigFile cf; cf.load("quake3settings.cfg");然後要找到要載入的BSP檔案
mQuakePk3=cf.getSetting("Pak0Location");//首先找到PK3壓縮檔
mQuakeLevel = cf.getSetting("Map");//找到具體的BSP檔案名稱
由此以來,通過BSP的資源設定檔,就得到了要載入的BSP資源所在的路徑(mQuakePk3)以及資源檔名(mQuakeLevel )。接下來就要把BSP資源的搜尋路徑添加到資源群組管理器,ResourceGroupManager::getSingleton().addResourceLocation(
mQuakePk3, "Zip", ResourceGroupManager::getSingleton().getWorldResourceGroupName(), true);
到此為止,系統已經知道了要載入的具體的BSP資源,以及到哪找這個資源。
接下來我們進入void loadResources(void),在這裡需要將BSP資源與世界地圖關聯起來,ResourceGroupManager::getSingleton().linkWorldGeometryToResourceGroup(
ResourceGroupManager::getSingleton().getWorldResourceGroupName(),
mQuakeLevel, mSceneMgr);
通過上面的調用,系統把世界地圖資源名稱(BSP檔案名稱mQuakeLevel)以及要渲染世界地圖的情境管理器設定給世界地圖資源群組(預設是將世界地圖放在預設分組中)。
接下來需要將BSP世界地圖資源群組(包括BSP資源)中的資源載入到記憶體ResourceGroupManager::getSingleton().loadResourceGroup(
ResourceGroupManager::getSingleton().getWorldResourceGroupName(),
false, true);
經過以上過程,系統就具備了要渲染的世界地圖資源。下面我們看看在什麼地方渲染該世界地圖(BSP資源)。
待續....