使用Three.js绘制流

时间:2013-08-30 14:07:09

标签: javascript three.js rendering webgl

我正在寻找Three.js中正确使用对象的指导,这将允许我从流中读取大量数据并进行渲染,而无需在整个应用程序生命周期内将数据存储在内存中。

根据我的理解,在WebGL中,这可以通过gl_drawArray完成,但Three.js对象代表了这种行为?

使用ParticleSystem对象时,数据会被放入内存中,因为我需要将所有点放入Geometry节点,然后再将其传递给ParticleSystem,所以我不会认为这是合适的。

感谢您提供的任何帮助。


修改 为了澄清,我需要阅读几百万个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。无论如何都要从文件中读取这些数据而不将其保留在内存中吗?

1 个答案:

答案 0 :(得分:3)

如果此线程无法获得更多答案的可能性,我已经恢复的解决方案是使用THREE.BufferGeometry而不是THREE.Geometry,以便使用GPU内存代替。使用这种方法,GPU使用了大约300MB的额外内存,这比RAM中使用的1GB更为可取。

其他输入非常受欢迎,因为与其他方法相比,GPU性能会受到FPS的影响。