3

我正在寻找正确使用对象的指导,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,因为数据在构建几何对象时持续存在。无论如何从文件中读取这些数据而不使其持久存在内存中?

4

1 回答 1

3

如果这个线程不会得到更多答案,我恢复的解决方案是使用THREE.BufferGeometry而不是THREE.Geometry使用 GPU 内存。使用这种方法,GPU 会使用大约 300MB 的额外内存,这比 RAM 中使用的 1GB 更可取。

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

于 2013-08-31T12:49:55.467 回答