【发布时间】:2011-12-09 08:11:11
【问题描述】:
正如我在之前的几篇文章中提到的,我正在创建一个类似于引擎的东西。
我已将地形划分为多个区域,并且仅渲染位于相机视锥体中的区域。当每个区域的顶点缓冲区被构建时,它们会检查每个块是否可以看到,如果不是,则不会将其添加到缓冲区中,如果是,它会检查哪些边没有被其他块包围并构建这些面.我还启用了逆时针剔除。
谁能提出任何其他提高性能的方法(注意:我还没有添加索引缓冲区,但只使用顶点缓冲区进行渲染)?前面提到的原因可能是我的帧率低的原因......而且我也想知道向这个引擎添加索引是否会提高性能。
我也不认为这与内存分配有任何关系。
编辑: 好的,我已经暗示了索引缓冲区,性能大大提高了,但我仍然认为它可以提高更多......
【问题讨论】:
-
您是否实现了某种 Marching Cubes 算法而不是将所有三角形都推到显示器上?
-
行进方块?我刚刚查看了维基百科的文章......我仍然不明白它的作用;)
-
该算法将体素世界变成了多边形汤,消除了内部三角形,只显示对象外部的三角形。如果你没有实现类似的东西,你可能会做很多多余的计算。
-
好吧,我已经做过类似的事情了。在构建顶点缓冲区时,它会检查哪些面是隐藏的,哪些块是隐藏的,并且不会将它们添加到缓冲区中。
-
我指出这一点的原因是,算法通常是你应该看的第一件事。测量可能会帮助您找到瓶颈。没有代码,我们真的无能为力。索引缓冲区可以提供帮助,但不能保证您的程序中可能存在其他“坏”点。
标签: c# performance xna voxel octree