尽管在 WebGL 中进行了优化,但帧率仍然很低

Low framerate despite optimization in WebGL

我正在使用 Three.Js 在 WEBGL 中开发一个项目。

这个项目包括一个静态的房间几何形状和数百个复制的椅子。将所有内容放在一起并使用以下技术优化帧率后:

当所有场景放在一起时,我的表现仍然很糟糕,每秒 15 帧。我正在使用两个定向灯和一个半球灯。

经过一些试验,瓶颈似乎出在几何体本身。

有没有人知道可能是什么问题?对于可接受的帧率,合理的多边形计数是多少?会不会是我使用的几何图形太重了?

有关信息,

我的房间几何结构有: 69996点, 290571个顶点, 82607 个基元

我的椅子几何结构有: 1254分, 4884个顶点, 1232 个基元

我认为问题不仅仅在于几何图形的多边形数量。我以 60 fps 渲染了更多。没有代码,很难说问题出在哪里。我认为您应该首先分析它,看看是否发现任何瓶颈。然后获取 webGL 检查器并获取 GPU 跟踪。跟踪调用 drawXXX 的次数。这比多边形计数更可能成为瓶颈。

最后,有可能三js可用的优化你都做了,还是不够快,那可能是三js的问题。众所周知,Three js 编写时并未将性能作为其主要目标之一。如果是这样,那么不幸的是你有点卡住了。

最后,WacławJasper 似乎是对的,绘制调用过多(每把椅子一个),这是导致 FPS 疯狂下降的瓶颈。

解决方案基于此:https://gamedev.stackexchange.com/questions/81570/merging-geometry-mesh-without-losing-benefits

通过进行几何合并并维护八叉树以进行交集计算,我设法复制了完全相同的系统,同时将绘图调用减少了 90%,这极大地提高了我的 FPS 率。

感谢大家的回答。