SkCanvs渲染原理

本文介绍,在浏览器中,调用SkCanvas的接口,背后实际做的事情。

相关的类

SkCanvas

SkCanvas是Skia的绘图上下文,它提供了一个绘图接口,封装了所有对设备进行的绘图操作。实现图形剪切和变换。维护变换矩阵和裁剪等操作的堆栈等。

SkCanvas包含了一个设备的引用,它知道将图形绘制到哪里。SkCanvas和SkPaint共同提供了在SkSurface或SkBaseDevice进行绘制操作所需的状态。SkCanvas使用SkPaint为每个绘制操作提供绘制所需的,诸如颜色,文本size,线宽,SkShader等状态信息。每个SkCanvas绘制操作通过串联堆栈中的所有SkMatrix值对绘制对象做几何形状变换。通过对堆栈中的所有裁剪值做交集来对绘制对象做裁剪。

通过SkCanvas可以绘制到基于像素的设备上,也可以绘制到一个document。要绘制到指定的像素上,我们需要先创建raster surface或GPU surface。通过SkSurface生成SkCanvas,从而得到绘制接口。

不同的SkSurface生成的SkCanvas差别很大:
raster surface生成的SkCanvas,是绘制到内存中,对CPU可见。
GPU surface生成的SkCanvas,是绘制到GPU上。

Skia还提供了其它的Backends:

  • SkPDF - PDF document creation.
  • SkPicture - Skia's display list format.
  • NullCanvas - Useful for testing only.
  • SkXPS - Experimental XPS backend.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值