尽管在WebGL中进行了优化,但帧速率较低
Low framerate despite optimization in WebGL
我正在使用Three.Js.在WEBGL中开发一个项目
这个项目包括一个静态的几何房间和数百把复制的椅子。在将整个事情放在一起并使用以下技术优化帧速率后:
-
椅子的实例化-每个对象都加载一次,然后在一个循环中实例化并添加到场景中,使用object.clone().
-
对象选择光线投射的八叉树优化。
-
所有静态对象的几何体合并。
-
实例化对象的LOD级别。
我仍然有一个糟糕的表现,当所有的场景放在一起时,每秒15帧。我使用两个平行光和一个半球光。
经过一点实验,瓶颈似乎在几何体本身。
有人知道可能是什么问题吗?对于可接受的帧速率,什么是合理的多边形计数?可能是我使用的几何体太重了吗?
供参考,
我的房间几何图形具有:69996分,290571个顶点,82607基元
我的椅子几何图形有:1254点,4884个顶点,1232基元
我不认为问题仅仅在于几何体的多边形数。我以每秒60帧的速度渲染了更多。如果没有代码,很难说问题出在哪里。我认为你应该先对它进行分析,看看是否发现了任何瓶颈。然后获取webGL检查器并获取GPU跟踪。记录drawXXX被调用的次数。这比poly计数更有可能成为瓶颈。
最后,如果你已经完成了Three-js的所有优化,但仍然不够快,那么这可能是一个Three js问题。众所周知,Three-js的编写并没有将性能作为其主要目标之一。如果是这样的话,那么不幸的是你有点被卡住了。
最后,WacławJasper似乎是对的,平局调用过多(每把椅子一个),这就是导致FPS疯狂下降的瓶颈。
解决方案基于此:https://gamedev.stackexchange.com/questions/81570/merging-geometry-mesh-without-losing-benefits
通过进行几何合并,并维护八叉树进行交叉计算,我成功地复制了完全相同的系统,同时将drawcalls减少了90%,这大大提高了我的FPS率。
谢谢你的回答。
- 在webrtc中实时控制视频发送帧速率
- 动画的可接受帧速率有多高
- 如何在javascript中将小数转换为帧速率指定
- WebGL:优化顶点缓冲区,每帧更改值和顶点计数
- 优化帮助:使用程序调用每一帧和低FPS
- 更改纸张中的帧速率.js
- 动态.JS精灵表帧速率在每个事件上加倍
- Nodejs - 防止 socket.io 降低帧速率
- 在javascript中获取视频的帧速率
- 在javascript中获取用户的帧速率
- 从单独下载的 JPEG 创建影片时帧速率太慢
- 当 iframe 位于视口中时,如何获得低帧速率
- Javascript - 无法调整帧速率 - 请求动画帧
- JS 请求动画帧帧速率
- 我可以查询requestAnimationFrame帧速率上限吗
- 尽管在WebGL中进行了优化,但帧速率较低
- 以有限的帧速率请求动画帧
- CreateJS:Firefox中的帧速率很差/很奇怪
- 在画布上播放精灵表比帧速率慢
- 有没有可能在javascript中找到监视器帧速率是多少