2008-10-07 91 views
2

我正在用C++編寫遊戲,並且有一個包含許多獨立網格的級別,每個網格都有自己的頂點緩衝區。我使用vmmlib(輝煌的免費gl compat。矢量/矩陣庫)來創建我的平截球體剔骨,並在關卡中對每個網格的邊界球進行測試。可悲的是,我的水平可以包含多達800個網格,並遍歷所有網格,每個幀都很慢。優化代碼的最佳方法是什麼,以便我不必在每次迭代中查看所有網格?在平截頭體內部包圍體積?Optimize Frustum Culling

回答

4

是邊界對象是要走的路,你應該小心選擇一個合適的邊界體積,例如對於像殭屍一樣在場景中移動的網格,不要躺在圓柱體上是最好的體積,其他更好的體現按立方體(軸對齊或不對齊)。

然後,您創建四叉樹或八叉樹以分層劃分網格數據。

這適用於戶外frustrum撲殺。

對於室內來說,BSP是最好的選擇,因爲你有很多牆來劃分你的空間。您仍然應該對包含多於10個多邊形的網格進行卷綁定。

3

我只想補充一點,現在幾天的門戶網站通常優先於BSP或與BSP結合使用,但我沒有足夠的信譽來編輯原始帖子。