Web Worker 在 WebGL 地图引擎中的实践|第一期

本文探讨了在WebGL地图引擎中利用Web Worker提升性能的原因和方法。通过介绍三角形剖分处理和数据通信优化,阐述了如何利用Web Worker进行数据处理,减少主线程卡顿,提高地图渲染的流畅性。并分享了业界实践,如WebGLWorker,以及如何确定Web Worker的数量以平衡性能和资源利用率。
摘要由CSDN通过智能技术生成

Web Worker 在 WebGL 地图引擎中的实践|第一期  作者:J

【Web Worker 扫盲】


Web Worker 对于前端开发人员来说一定不陌生,即使没有在实际项目中使用过,那么也一定有所了解。Web Worker 是为了解决 JavaScript 在浏览器环境中没有多线程的问题。支持 Web Worker 的浏览器会额外提供一个 JavaScript Runtime 供 Web Worker 使用。需要注意的是在 Web Worker 中不能使用和访问 DOM 元素,也访问不到 Window 对象。它的最佳使用场景是执行一些开销较大的数据处理或计算任务。


Web Worker 使用起来非常简单,在“主线程”中执行如下操作即可创建一个 Worker 实例,通过监听 onmessage 事件获取消息,通过 postMessage 发送消息:

var worker = new Worker('worker.js');
worker.onmessage = function (e) {
   var data = e.data;
}
worker.postMessage(['message']);


worker.js 中的代码如下:

self.onmessage = function(e) {
  
    var messages = e.data;
    var workerResult = {};
    // do something
    ...
    postMessage(workerResult);
}

“主线程”和Worker 之间通过 postMessage 发送消息,通过监听 onmessage 事件来接收消息,从而实现二者的通信。


【为什么使用 Web Worker】


在对 Web Worker 进行了简单扫盲之后,接下来说说为什么要在 WebGL 地图引擎中使用它。熟悉 WebGL 或者 OpenGL 的会知道,不论多么复杂的图形或模型,最终都是由若干三角形组成,地图也不例外。地图上表示绿地、水系的面以及各种道路最终都需要通过三角形来描述,所以在绘制之前我们需要对原始数据进行如下加工:

 

线的处理过程示意:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值