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

最佳答案

是的,要走的是边界物体,您应该谨慎选择一个适当的边界体积,例如对于像机器人这样在场景中四处移动且不躺下圆柱体的网格物体是最佳体积,其他物体最好用立方体(轴)来表示。是否对齐)。

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

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

对于室内而言,BSP是最好的方法,因为您有很多墙壁可以划分空间。您仍应对具有10个以上多边形的网格进行体积限制。

关于c++ - 优化视锥剔除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/179643/

10-13 03:05