Skia初步

    • 简介
    • 相关链接
    • 下载Skia
      • 安装depot_tools和Git
      • 下载Skia代码仓库
      • 选择分支
    • 编译前的准备
    • 生成解决方案sln

简介

skia是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现。不仅用于Google Chrome浏览器,新兴的Android开放手机平台也采用skia作为绘图处理,搭配OpenGL/ES与特定的硬件特征,强化显示的效果。

自2005年Skia被Google收购后,一直相当神秘低调,直到2007年初,Skia GL相关的程式码才被揭露,作为Google Android平台的图形引擎,稍候的Google Chrome浏览器也采用Skia引擎。随着Android与Chrome (开放版本称为”Chromium”)两大专案公布程式码后,skia也一并公开原始程式码,以Apache License v2释出(注意,这意味着与GPLv2授权不相容) ,而Android与Chrome的程式码库中都有一份[skia]的复制,因需求不同,做了部份的修改,比方说Chrome专案底下的 [chrome/trunk/src/skia],需要注意的是,Skia本身是不涉及底层环境,如Linux Framebuffer或Gtk+衔接的处理,这也是何以Android (透过Linux Framebuffer)与Chrome (开发中的Linux版本使用Gtk+)需要提供一份修改,以便系统接轨

Google 图形处理引擎 Skia

相关链接

  1. 官网
  2. Samples and Tutorials
  3. skia深入分析
  4. skia结构目录

下载Skia

安装depot_tools和Git

git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'

添加depot_tools目录到PATH

下载Skia代码仓库

git clone https://skia.googlesource.com/skia.git
cd skia
python tools/git-sync-deps

选择分支

这里选择了chrome58分支

git checkout chrome58

编译前的准备

根据官网文档的描述

Skia can build on Windows with Visual Studio 2015 Update 3, or Visual Studio 2017 by setting msvc = 2017 in GN. No older versions are supported.

官方支持对32位的构建支持的不好,这里想用Visual Studio 2015 Update3编译32位版本的skia,需要对构建系统的配置进行一些修改,Windows下的基础编译改动如下:

  1. BUILD.gn
skia_use_gdi = true
  1. gn/BUILD.gn
    • 去掉警告视为错误
/WX 改为 /W3
* 注释
if (target_cpu == "x86") {
   # bin += "_x86"
   # env_setup = "cmd /c $windk/win_sdk/bin/SetEnv.cmd /x86 && "
  }
* 路径加引号
$bin/cl.exe 改为 \"$bin/cl.exe\  
$bin/link.exe 改为 \"$bin/link.exe\"
  1. gn/gn_meta_sln.py
|x64 改 |x86

生成解决方案sln

这里生成x86版本的动态库和静态库

bin\gn gen out\StaticRelease --args="is_official_build=true is_debug=false target_cpu=\"x86\""  --ide=vs
bin\gn gen out\StaticDebug --args="is_official_build=true is_debug=true target_cpu=\"x86\""  --ide=vs
bin\gn gen out\SharedRelease --args="is_official_build=true is_debug=false is_component_build=true target_cpu=\"x86\"" --ide=vs
bin\gn gen out\SharedDebug --args="is_official_build=true is_component_build=true  is_debug=true target_cpu=\"x86\"" --ide=vs
python gn\gn_meta_sln.py

你可能感兴趣的:(UI)