【发布时间】:2018-11-02 18:11:18
【问题描述】:
我想使用 three.js 渲染一个任意大的静态网格。网格可能为 2 GB,包含数千万个多边形。
我想将网格几何缓冲区流式传输到 indexedDB 中,并逐步将它们读出并将它们渲染到屏幕上,同时保持交互式帧速率。我将创建一个 MemoryManager 类,通过将数据从 indexedDB 加载到固定大小的缓冲区,确保我们不会使浏览器崩溃。在我的动画循环中,我将在 16 毫秒内渲染尽可能多的几何图形,直到用户停止交互,然后继续渲染网格,直到不再有。
这是我想采用的高级方法,当然还有许多优化需要完成。 (对象池、八叉树、遮挡查询等)
我的问题是:有没有更好的方法来做到这一点,以前有没有做过?(使用 WebGL1,我知道 WebGL2 遮挡查询可以做到这一点更简单)
另外,自定义 Three.js WebGLRenderer 类的最佳方式是什么?我需要访问一些私有闭包变量(如 WebGLState )来调整我的用例的性能。
【问题讨论】:
-
Re: WebGLRenderer 没有分叉,没有真正的好方法。几个版本之前,很多内部结构都暴露出来了,所以你可以在一定程度上对其进行修补。现在有更多的封装,但好消息是它“相当”模块化。
标签: javascript performance graphics three.js webgl