TGFX —— 跨平台 2D 绘图引擎
TGFX (Tencent Graphics) 是一个轻量级 2D 图形库,设计用于渲染文本、几何图形和图像。它提供高性能的 API,可在各种 GPU 硬件和软件平台上运行,包括 iOS、Android、macOS、Windows、Linux、Web 等。
TGFX 最初是作为 PAG 项目的核心组件创建的,从 4.0 版开始成为 libpag 库的默认图形引擎。它的主要目标是在保持更小二进制文件大小的同时,为 Skia 图形库提供令人信服的替代方案。随着时间的推移,它已被许多其他产品采用,如 Hippy、腾讯文档和各种视频编辑应用程序。
包体优化
TGFX 最终以 400K 左右的大小覆盖了 Skia 近 2M 包体的绝大部分功能。核心优化策略主要有两点:
调度优化
TGFX 并不只是做 Skia 的简化,还把一些在业务上调用起来非常复杂的通用性流程进行了抽象封装:
在性能和架构方面,还做了这些额外的优化:
- 默认开启了 HardwareBuffer 的支持,来全面加速纹理的提交,包括 Android 端。
- 暴露了引擎内部 Path 对应的 GPU 高速缓存,避免矢量绘制充分进行三角剖分操作。
- GPU 对象支持在任意线程释放,等关联的上下文激活时才清理,避免随机 Crash 问题。
- 约束图片解码完会尽可能只缓存 GPU 的纹理部分,理论上全局可以降低一半的内存占用。
- 将绝大部分缓存都交给了上层业务精确管理,避免随机绘制的缓存持续占用额外的内存。
- 在全平台都实现了默认字体的读取能力,包括浏览器,避免下载上百兆 CJK 字体的压力。
- 增加了对各种硬解视频帧格式的直接绘制能力,可以一次性上屏无需通过 CPU 转换格式。
- 放弃了 SKSL 的统一 Shader 语言设计,更加符合原生接口调用习惯,既节省了包体,也减少了 GPU Program 的编译耗时。

