我有一個應該使用WebGL呈現的大約108000個三角形的網格。高性能WebGL框架
目前我沒有使用框架,只是純粹的WebGL。我已經通過id映射實現了對象識別功能以及基本的相機操作器。
現在我想切換到WebGL框架的維護問題。
我已經嘗試Three.js,但它是減慢大網格。你知道一個適合大網格的WebGL框架嗎?
編輯:
我嘗試呈現近10000立方節點樹圖,並希望做每一個選擇(總的目標是10萬個立方)。
下面是函數,是建立現場:
BP2011.Treemap.prototype.buildScene = function() {
// ... [create scene, camera and lights]
var nodesParentNode = new THREE.Object3D();
scene.add(nodesParentNode);
var nodes = this._nodes;
for(var i = 0; i < nodes.length; i++) {
nodesParentNode.add(nodes[i].buildSceneObject());
}
this.threejs.nodesParentNode = nodesParentNode;
};
這裏的功能,即構建一個多維數據集:
BP2011.Treemap.Node.prototype.buildSceneObject = function(buildGeometry, buildMaterial) {
// ...
if (buildGeometry || (self.sceneObject && self.sceneObject.geometry === undefined)) {
// ... [compute cube position and extension]
geometry = new THREE.CubeGeometry(
maxX - minX,
maxY - minY,
maxZ - minZ);
} else {
geometry = this.sceneObject.geometry;
}
mesh = new THREE.Mesh(geometry, new THREE.MeshPhongMaterial({color: 0x4444DD}));
mesh.position.x = (maxX + minX)/2;
mesh.position.y = (maxY + minY)/2;
mesh.position.z = (maxZ + minZ)/2;
// testing for performance
mesh.matrixAutoUpdate = false;
mesh.updateMatrix();
mesh.geometry.__dirtyVertices = true;
mesh.geometry.__dirtyElements = true;
// backwards reference for handling
this.sceneObject = mesh;
this.sceneObject.behaviorObject = this;
return this.sceneObject;
};
所以我有近10000子節點父節點,因爲我不知道如何選擇一個物體。
如果您有任何建議,如何解決此問題,歡迎您。
我也已經看過scene.js: 多達4000個立方體的表現真的很好,但是在特定數量的立方體(大約4100)下急劇下降。所以我想我通過了一些數組大小。
謝謝,我編輯了我的問題。 – 2012-03-06 09:20:44