【问题标题】:Increasing performance in Voxel Engine提高体素引擎的性能
【发布时间】:2011-12-09 08:11:11
【问题描述】:

正如我在之前的几篇文章中提到的,我正在创建一个类似于引擎的东西。

我已将地形划分为多个区域,并且仅渲染位于相机视锥体中的区域。当每个区域的顶点缓冲区被构建时,它们会检查每个块是否可以看到,如果不是,则不会将其添加到缓冲区中,如果是,它会检查哪些边没有被其他块包围并构建这些面.我还启用了逆时针剔除。

谁能提出任何其他提高性能的方法(注意:我还没有添加索引缓冲区,但只使用顶点缓冲区进行渲染)?前面提到的原因可能是我的帧率低的原因......而且我也想知道向这个引擎添加索引是否会提高性能。

我也不认为这与内存分配有任何关系。

编辑: 好的,我已经暗示了索引缓冲区,性能大大提高了,但我仍然认为它可以提高更多......

【问题讨论】:

  • 您是否实现了某种 Marching Cubes 算法而不是将所有三角形都推到显示器上?
  • 行进方块?我刚刚查看了维基百科的文章......我仍然不明白它的作用;)
  • 该算法将体素世界变成了多边形汤,消除了内部三角形,只显示对象外部的三角形。如果你没有实现类似的东西,你可能会做很多多余的计算。
  • 好吧,我已经做过类似的事情了。在构建顶点缓冲区时,它会检查哪些面是隐藏的,哪些块是隐藏的,并且不会将它们添加到缓冲区中。
  • 我指出这一点的原因是,算法通常是你应该看的第一件事。测量可能会帮助您找到瓶颈。没有代码,我们真的无能为力。索引缓冲区可以提供帮助,但不能保证您的程序中可能存在其他“坏”点。

标签: c# performance xna voxel octree


【解决方案1】:

在这种情况下,我们求助于 Profiler :) 我建议 CLRSlimTune(感谢 A-Type)。根据您使用的 .NET Framework,您可以下载相应的框架。然后你可以找出你的瓶颈在哪里,你应该把注意力集中在哪里,而不是在黑暗中刺痛。

【讨论】:

  • CLR 分析器是内存分析器,而不是性能分析器。仅当内存分配导致性能不佳时才有用。
  • 我不认为性能不佳是内存分配造成的。
  • 确定总是好的。我遇到的大多数问题都是由应该没问题的事情引起的。
猜你喜欢
  • 1970-01-01
  • 2019-07-14
  • 2023-01-05
  • 2019-07-11
  • 1970-01-01
  • 2015-04-28
  • 2018-09-25
  • 2014-11-25
  • 2020-11-03
相关资源
最近更新 更多