繁体   English   中英

优化Frustum剔除

[英]Optimize Frustum Culling

我正在用C ++编写游戏,并且有一个由许多单独的网格组成的关卡,每个网格都有自己的顶点缓冲区。 我正在使用vmmlib(辉煌的自由gl compat。矢量/矩阵库)来创建我的视锥体剔除者并对照该级别中每个网格的边界球体进行测试。 遗憾的是,我的关卡可以包含多达800个网格,并且迭代遍历所有网格,每个帧都很慢。 什么是优化代码的最佳方法,以便我不必在每次迭代时查看所有网格? 截头体内的边界体积?

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

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

这适用于户外截头剔除。

对于室内,BSP是最好的方式,因为你有很多墙壁可以分隔你的空间。 您仍然应该对包含10个以上多边形的网格进行体积限制。

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

我只想补充一点,现在一天门户网站通常比BSP更受欢迎,但我没有足够的声誉来编辑原始帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM