在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資源)。
待續....