Threejs in autonomous driving -(3)merge geometry

由于使用場景的關(guān)系,我們的產(chǎn)品主要設(shè)備是ipad,使用軟件為chrome或者safari。對webgl無節(jié)制的使用,很容易造成災(zāi)難性的后果崩潰。所以我們要減少cpu和memory的使用。

原理

據(jù),運(yùn)行效率會(huì)提高很多。

這里感謝一篇文章,詳細(xì)的介紹了merge geometry。里面的API雖然經(jīng)過版本迭代有所變化,但是效果依然。通過這種技術(shù)成功的使我們可以一次展示成千上萬個(gè)geometry。
performance-merging-geometry

實(shí)現(xiàn)

實(shí)現(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);
});

驗(yàn)證

直觀上可以看到cpu和memory使用減少了,怎樣可以去量化呢。Threejs的renderer示例提供了一個(gè)可以接口,renderer.info屬性可以看到render的實(shí)時(shí)情況。使用renderer.info.calls可以對比一下前后的drawacall情況。


  • 我的blog: neverland.github.io

  • 我的email enix@foxmail.com這里照抄一段webgl高級編程的原文。

    任何對WebGL API的調(diào)用都會(huì)帶來開銷。每個(gè)調(diào)用都會(huì)要求CPU進(jìn)行額外的處理和數(shù)據(jù)復(fù)制,這回占用時(shí)間并要求CPU做一些額外工作。通常,如果GPU接收到大批可并行處理的數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Threejs中文文檔 郭隆邦技術(shù)博客 2018-09-21 20:40:17 關(guān)注 Three.js中文文檔 今...
    情人波閱讀 14,393評論 0 7
  • 1.重用Material和Geometry 2.不在render()中實(shí)例化或是賦值操作 3.粒子系統(tǒng)代替粒子 4...
    bbh123閱讀 4,793評論 1 3
  • Babybus-u3d技術(shù)交流-減少Draw Call(批渲染) 描繪調(diào)用批處理 Draw Call Batchi...
    Babybus_Unity閱讀 1,095評論 0 1
  • 一步步帶你實(shí)現(xiàn)web全景看房——three.js canvas畫2d相信大家都很熟悉了,但3d世界更加炫酷。我們直...
    Jiao_0805閱讀 753評論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,981評論 0 9

友情鏈接更多精彩內(nèi)容