Threejs in autonomous driving -(3)merge geometry

由于使用场景的关系,我们的产品主要设备是ipad,使用软件为chrome或者safari。对webgl无节制的使用,很容易造成灾难性的后果崩溃。所以我们要减少cpu和memory的使用。

原理

据,运行效率会提高很多。

这里感谢一篇文章,详细的介绍了merge geometry。里面的API虽然经过版本迭代有所变化,但是效果依然。通过这种技术成功的使我们可以一次展示成千上万个geometry。
performance-merging-geometry

实现

实现非常的简单,见一下案例代码。官方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进行额外的处理和数据复制,这回占用时间并要求CPU做一些额外工作。通常,如果GPU接收到大批可并行处理的数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Threejs中文文档 郭隆邦技术博客 2018-09-21 20:40:17 关注 Three.js中文文档 今...
    情人波阅读 14,211评论 0 7
  • 1.重用Material和Geometry 2.不在render()中实例化或是赋值操作 3.粒子系统代替粒子 4...
    bbh123阅读 4,717评论 1 3
  • Babybus-u3d技术交流-减少Draw Call(批渲染) 描绘调用批处理 Draw Call Batchi...
    Babybus_Unity阅读 1,056评论 0 1
  • 一步步带你实现web全景看房——three.js canvas画2d相信大家都很熟悉了,但3d世界更加炫酷。我们直...
    Jiao_0805阅读 695评论 0 0
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,494评论 0 9