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类
解析网页遇到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类