2013-08-30 25 views
3

我在尋找正確的對象使用指南Three.js,這將允許我從流中讀取大量數據並呈現它,而不必在整個應用程序中將數據存儲在內存中一生。使用Three.js流繪圖

從我的理解中,通過WebGL這個可以通過gl_drawArray完成,但是哪個對象代表這種行爲?

當使用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的建設幾何對象的數據仍然存在。無論如何要從文件中讀取這些數據而不使其保留在內存中?

+0

您能詳細闡述一下您正在流式傳輸什麼樣的數據。動畫的多個框架?大型模型的幾何子集,在不清除介於兩者之間的緩衝區的情況下進行渲染?我無法把頭繞在gl_drawArray會解決的任何流式問題上......也許如果你可以更多地解釋_that_部分,它可能會幫助我們找出three.js方法來完成那個,*或*找出缺陷你的概念方法。 –

+0

謝謝@ Paul-Jan,我已經更新了原始帖子,提供了更多信息。 – BlackBox

回答

3

關於此線程無法得到更多答案的機會,我已經回覆的解決方案是使用THREE.BufferGeometry而不是THREE.Geometry,以便使用GPU內存。使用這種方法,GPU使用大約300MB的額外內存,這比RAM中使用的1GB更加可取。

然而,其他輸入是非常受歡迎的,因爲GPU性能與其他方法相比FPS命中率較高。

+0

對於我來說,看到你用來完成這個任務的代碼是非常有用的。是可用的麼? – foobarbecue