在MacOS上使用Skia渲染引擎

啊。。这是我第二次用Skia了,每次编译都忘一遍,C++工程环境真的太难搭建了,真的是我为数不多能跑起来的库了,还有一个是ffmpeg吧。。每次踩一遍忘一遍,所以下定决心写篇文章记录一下了。

介绍

Skia是Google家用的一个2D图形渲染库,基本Google家的产品设计图形绘制的地方都是用的它,比如Chrome啊,Flutter啊等等。这注意,这里主要是2D的渲染,是一个C++写的类库,底层封装了一些OpenGL的方法和一些硬件优化来进行绘制。

编译Skia静态库

  1. Skia的下载和编译参考官网也就可以了~下载戳这里:https://skia.org/user/download, 通过git进行下载,然后用python执行一下它的同步功能。
  2. 如果没有安装ninja,需要安装一下google的depoy_tools:https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
  3. 编译戳这里:https://skia.org/user/build,主要是用gn和ninja进行编译,关于这两个工具可以参考我的这篇文章:https://segmentfault.com/a/1190000021031810,mac上只要执行这两个命令就行。

    bin/gn gen out/Debug
    ninja -C out/Debug

引入Xcode工程

这个回答超级好!
这个回答超级好!
这个回答超级好!
重要的事情说三遍!
https://stackoverflow.com/questions/43841874/how-to-link-the-skia-library-for-a-c-project-with-xcode
开始的时候疯狂报错一些应该是和图形或者字体相关的方法找不到,后来终于在上面那个回答里找到是几个MacOS上的基础类库没有添加进去。
在MacOS上使用Skia渲染引擎_第1张图片

在Xcode里添加静态库千万不要忘记3个步骤:

  1. 在Header Search Paths里面添加头文件的索引路径
  2. 在Library Search Paths里面添加静态库的目录路径
  3. 在Link Binary With Libraries添加具体的.a文件

开始开发

实不相瞒,我直接拷贝了官方的一个example跑起来的:https://github.com/google/skia/blob/master/example/SkiaSDLExample.cpp
最开始的时候碰到好多问题,因为每次开发C++都忘记一遍怎么引入静态库,一般碰到Undefined Symbol啥啥啥都是没有引入对应的静态库或者动态库之类的,跑起来就是这样子的呢~
在MacOS上使用Skia渲染引擎_第2张图片

你可能感兴趣的:(chrome,图形学,canvas,c++,javascript)