chromium for android v34 2dCanvas硬件绘制实现分析

本文详细介绍了Chromium for Android中2DCanvas如何利用硬件加速进行绘制,从GrContext的创建、绘制动作的转移、Skia库与GPU的交互到纹理的生成,揭示了CanvasRenderingContext2D的fillRect()等操作如何转化为GPU指令并执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTMLCanvasElement对应h5的canvas元素。
解析网页遇到canvas元素会创建HTMLCanvasElement实例。
Canvas可以支持2d和3d图形的绘制。
HTMLCanvasElement提供了getContext()接口,返回图形绘制的上下文对象,
对于2d图形返回的是CanvasRenderingContext2D。
CanvasRenderingContext2D提供了网页可调用的所有绘制动作。
CanvasRenderingContext2D的所有绘制命令都转接给了
HTMLCanvasElement::drawingContext()提供的绘制上下文。
HTMLCanvasElement是整个Canvas实现的入口。
我们从这里入手理出2dCanvas的硬件绘制及硬件渲染架构。
一.硬件绘制的实现结构
硬件绘制是指,网页调用的绘制动作,通过HTMLCanvasElement
转给skia库,skia库通过调用GPU命令完成实际的绘制操作。
软件绘制是指skia库在cpu上完成绘制操作。
完成硬件绘制需要:
1.建立HTMLCanvasElement与skia库的GrContext(skia硬件绘制上下文)之间的联系。
2.建立skia库GrContext与GPU之间的联系。
3.创建保存硬件绘制结果的Texture.
完成这3件事,网页调用HTMLCanvasElement的绘制命令经由Skia库调用
实际的GPU操作绘制到保存绘制结果的Texture上。
1.建立HTMLCanvasElement与skia库的GrContext(硬件绘制上下文)之间的联系。
Skia的GrContext封装在webkit::gpu:: GrContextForWebGraphicsContext3D类
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值