简单介绍Skia原理

简介: Skia是一个跨平台的2D图形库。其底层原理包括:画布(Canvas),绘制引擎(Paint Engine),渲染管线(Render Pipeline),影子图片(Skia Pictures),路径(Path)

Skia是一个跨平台的2D图形库,其底层原理包括:


1. 画布(Canvas):Skia中的所有绘制操作都是在画布上完成的,通过Canvas实现。Canvas提供了许多方法来绘制基本的几何图形、文本、位图等。


2. 绘制引擎(Paint Engine):Skia的绘制引擎是其核心部分,它能够解析绘制指令并将其转化为最终的像素数据。绘制引擎采用了一些优化技术,如GPU加速、矢量图形渲染和颜色空间转换等。


3. 渲染管线(Render Pipeline):Skia使用先进的渲染管线来处理绘制命令。该管线由多个阶段组成,包括几何图形剪裁、着色器、纹理映射、混合和蒙版等。


4. 影子图片(Skia Pictures):Skia使用影子图片来存储绘制命令序列,以便实现快速的重复渲染。影子图片是一种轻量级的结构,它只记录了绘制命令,不包含任何像素数据。


5. 路径(Path):Skia中的路径是由一系列线段和曲线组成,可以用于绘制各种形状。路径也可以被用于剪裁、变换和遮罩等操作。


以下是一个简单的Skia代码示例,用于创建并绘制一个红色矩形:

#include"include/core/SkCanvas.h"#include"include/core/SkSurface.h"#include"include/core/SkPaint.h"#include"include/core/SkRect.h"intmain() {
// 创建画布sk_sp<SkSurface>surface=SkSurface::MakeRasterN32Premul(640, 480);
SkCanvas*canvas=surface->getCanvas();
// 绘制矩形SkPaintpaint;
paint.setColor(SK_ColorRED);
SkRectrect=SkRect::MakeXYWH(100, 100, 200, 200);
canvas->drawRect(rect, paint);
// 保存为图片SkImageInfoinfo=surface->imageInfo();
sk_sp<SkData>data(surface->makeImageSnapshot()->encodeToData());
SkFILEWStream("output.png").write(data->data(), data->size());
return0;
}
相关文章
|
缓存 监控 Kubernetes
Spring Cloud 微服务集群 Monitor 监控中心| 学习笔记
快速学习 Spring Cloud 微服务集群 Monitor 监控中心。
 Spring Cloud 微服务集群 Monitor 监控中心| 学习笔记
|
存储 缓存 Linux
Linux内核学习(九):linux内核的特殊文件系统-debugfs、ftrace、sys
Linux内核学习(九):linux内核的特殊文件系统-debugfs、ftrace、sys
903 0
|
网络协议 文件存储 数据安全/隐私保护
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
|
Web App开发 JavaScript 数据处理
使用 Vue Performance Devtool 进行性能分析
【10月更文挑战第2天】
1176 156
|
存储 API Android开发
Skia深入分析
原文出处:http://blog.csdn.net/hgl868/article/details/45583667 一、渲染层级从渲染流程上分,Skia可分为如下三个层级:1、指令层:SkPicture、SkDeferredCanvas->SkCanvas这一层决定需要执行哪些绘图操作,绘图操作的预变换矩阵,当前裁剪区域,绘图操作产生在哪些layer上,Layer的生成与合并。
5263 0
|
Python
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
678 3
|
人工智能 算法 Java
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
|
自然语言处理 测试技术 人工智能
Meta等最新研究:多token预测,提升大模型推理效率
【6月更文挑战第2天】Meta等机构的研究人员提出了一种新的大型语言模型训练方法——多token预测,以提高样本效率和推理速度。该方法要求模型同时预测多个接下来的token,而非传统的单一token预测,从而减少局部模式依赖,提高模型的宏观决策能力。实验表明,这种方法在提升模型性能和推理速度方面效果显著,尤其在编程任务中表现出色。然而,多token预测可能需要更多计算资源,并不适用于所有NLP任务,其在自然语言处理领域的应用仍有待深入研究。论文链接:https://arxiv.org/abs/2404.19737
945 7
|
存储 算法 安全
深入理解SHA系列哈希算法:安全性的保障与演进
深入理解SHA系列哈希算法:安全性的保障与演进
|
缓存 Android开发
Skia深入分析5——skia文字绘制的实现
文字绘制主要包括编码转换(主要是中文)、字形解析(点线或image)和实际渲染三个步骤。在这个过程中,字形解析和实际渲染均是耗时步骤。Skia对文字解析的结果做了一套缓存机制。在中文字较多,使用多种字体,绘制的样式(粗/斜体)有变化时,这个缓存会变得很大,因此Skia文字缓存做了内存上的限制。 1、SkPaint 文字绘制与SkPaint的属性相关很大,先回头看下SkPaint相关
7868 0

热门文章

最新文章