使用Three.js进行流式绘制
Stream drawing with Three.js
我正在寻找Three.js
中正确使用对象的指导,这将使我能够从流中读取大量数据并进行渲染,而无需在整个应用程序生命周期中将数据存储在内存中。
根据我的理解,在普通的WebGL
中,这将通过gl_drawArray
来实现,但哪个Three.js
对象表示这种行为?
当使用ParticleSystem
对象时,数据被放入内存中,因为我需要在将所有点传递给ParticleSystem
之前将其放入Geometry
节点,所以我认为这不合适。
感谢您提供的任何帮助。
编辑:为了澄清,我需要阅读几百万个x,y,z
条目,并将每个条目显示为空间中的一个点。我现在使用的流程是(简而言之):
var geometry = new THREE.Geometry();
while( hasMoreData ){
var vertex = new THREE.Vector3(x,y,z);
geometry.vertices.push( vertex );
}
sphere = new THREE.ParticleSystem( geometry, shaderMaterial );
scene.add(sphere);
使用这个过程,我的内存消耗增加了大约1GB,因为在构建几何体对象时数据仍然存在。有没有办法从文件中读取这些数据而不使其在内存中持久存在?
关于这个线程不会得到更多答案的可能性,我恢复到的解决方案是使用THREE.BufferGeometry
而不是THREE.Geometry
,这样就可以使用GPU内存。使用这种方法,GPU会消耗掉大约300MB的额外内存,这比RAM中消耗掉的1GB更可取。
然而,其他输入非常受欢迎,因为与其他方法相比,GPU性能会受到FPS的影响。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 有没有一个javascript图形绘制库可以进行气球树布局
- 使用相同的数据集绘制各种符号
- 在Three.js中导出网格会提高性能吗
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- 如何在three.js中设置网格绘制的动画
- 在three.js中绘制半个球体的问题
- 如何使用Three.JS绘制n边区域
- getusermedia视频不是在three.js平面上绘制的
- 使用Three.js进行流式绘制
- 获取渲染时在three.js中绘制的元素的图像
- 在Three.js中绘制线条动画
- 如何在Javascript中绘制3d blezier曲线?(three.js, webGL)
- 在three.js中绘制弧线
- 如何在three .js中使用math/sphere.js绘制球体
- 使用three.js,我将如何在立方体上徒手绘制
- 如何在运行时使用three.js绘制线段
- 用three.js绘制一个开弧