2

我正在用 C++ 编写游戏,并且有一个由许多单独的网格组成的关卡,每个网格都有自己的顶点缓冲区。我正在使用 vmmlib(出色的免费 gl compat.vector/matrix 库)来创建我的截锥剔除器,并针对关卡中每个网格的边界球对其进行测试。可悲的是,我的关卡最多可以包含 800 个网格,并且每帧迭代所有这些网格很慢。优化代码的最佳方法是什么,这样我就不必在每次迭代时查看所有网格?截锥体内的边界体积?

4

3 回答 3

4

是的,边界对象是要走的路,你应该注意选择一个足够的边界体积,例如对于像机器人一样在场景中移动并且不躺下的网格是最好的体积,其他最好用立方体表示(轴对齐与否)。

然后创建一个四叉树或八叉树来分层划分网格数据。

这对于户外截锥体剔除非常有效。

对于室内来说,BSP 是最好的选择,因为你有很多墙来分隔你的空间。您仍然应该对具有 10 个以上多边形的网格进行体积绑定。

于 2008-10-07T18:04:02.693 回答
3

二进制空间分区或其近亲四叉树

于 2008-10-07T17:59:22.780 回答
3

我只是想补充一点,现在门户网站通常优于 BSP 或与 BSP 结合使用,但我没有足够的声誉来编辑原始帖子。

于 2008-10-10T22:34:03.010 回答