今天又重新看了一下 skia 这个库,发现是 google 开源出来的,在 Chrome、Android 上都有使用。
skia是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现。不仅用于Google Chrome浏览器,新兴的Android开放手机平台也采用skia作为绘图处理,搭配OpenGL/ES与特定的硬件特征,强化显示的效果。
因此花时间看了下这个库,发现其在web 端有个相应的 wasm 模块 CanvasKit。
CanvasKit是以WASM为编译目标的Web平台图形绘制接口,其目标是将Skia的图形API导出到Web平台。
觉得后续应该可以用这个模块来去做核心画布。
根据官方文档(https://skia.org/user/modules/canvaskit)), canvaskit基于skia的API设计向web平台提供了更加方便的图形接口,可以说起到了类似GLWrapper的作用。 得益于Skia本身的其他扩展功能,canvaskit相比于浏览器原生绘制能力,支持了许多更加上层的业务级别功能,例如skia的动画模块skottie(> https://skia.org/user/modules/skottie)Skia中的skottie本身就支持Lottie动画解析和播放,由于Skia良好的跨平台能力,Android和iOS平台现在均可以使用Skia框架来播放Lottie动画,canvaskit则运用WebAssembly的技术来将跨平台的范围扩展到web上,使得web平台可以通过canvaskit的skottie相关接口直接播放lottie动画 对于Web应用而言,canvaskit提供了开发者更加友好的图形接口,并提供了常见的图形概念(例如Bitmap,Path等),减少了上层应用开发者对于绘制接口的理解负担,开发者只需要理解Skia的图形概念即可开发图形界面,有了skia他们也不需要理解复杂的webgl指令。
From: > https://tedaliez.github.io/2019/07/14/CanvasKit简介
这段话给我的感知就很好,
相当于 skia 的 canvasKit 就是个底层画布框架,我们在上面做应用层开发就可以。而且可以集成 lottie 动画。
我甚至能够想到一个场景:将动画对象直接嵌入到设计文件中。然后可以在展示时进行动画演示。
想想就很让人兴奋! 所以说找到合适的库,就相当于成功了一半。
