由于使用場景的關系品姓,我們的產品主要設備是ipad距境,使用軟件為chrome或者safari习寸。對webgl無節(jié)制的使用,很容易造成災難性的后果
崩潰
惦界。所以我們要減少cpu和memory的使用挑格。
原理
據(jù),運行效率會提高很多沾歪。
這里感謝一篇文章漂彤,詳細的介紹了merge geometry
。里面的API雖然經過版本迭代有所變化灾搏,但是效果依然挫望。通過這種技術成功的使我們可以一次展示成千上萬個geometry。
performance-merging-geometry
實現(xiàn)
實現(xiàn)非常的簡單狂窑,見一下案例代碼媳板。官方API Geometry.merge
let geometry = new THREE.Geometry();
junction.forEach(({point}) => {
point.push(point[0]);
let junction = getShapeGeometryFromPoints(point, false);
geometry.merge(junction);
});
驗證
直觀上可以看到cpu和memory使用減少了,怎樣可以去量化呢泉哈。Threejs的renderer示例提供了一個可以接口蛉幸,renderer.info屬性可以看到render的實時情況。使用renderer.info.calls可以對比一下前后的drawacall情況丛晦。
我的blog: neverland.github.io
-
我的email enix@foxmail.com這里照抄一段
webgl高級編程
的原文奕纫。任何對WebGL API的調用都會帶來開銷。每個調用都會要求CPU進行額外的處理和數(shù)據(jù)復制烫沙,這回占用時間并要求CPU做一些額外工作匹层。通常,如果GPU接收到大批可并行處理的數(shù)