先了解一下上下文。
OpenGL 是一种用于编程图形卡的 API。对 OpenGL 的 API 调用被 GPU 供应商(通常是 Nvidia、AMD 或 Intel)的驱动程序转换为计算机中 GPU 卡的命令。
(编程 GPU 的其他 API 包括 Windows 上的 Direct3D、macOS 上的 Metal、Vulkan 等)
这些 API 有点“低级”,因为它们发出调用以指示 GPU 在原始“几何”/“像素”级别上做什么;这些 API 没有“在此处绘制矩形”或“在此处绘制此图像”之类的功能。
像 Chrome 这样的网络浏览器为 HTML5 页面提供了 WebGL API。 WebGL 主要是 OpenGL ES 2.0 API。
ANGLE 是一个将 OpenGL ES 2.0 API 转换为 GPU API 之一的库:您进行 OpenGL ES 2 调用,而 ANGLE 转换为桌面 OpenGL 中的等效调用,或 Windows 上的 Direct3D,或 macOS 上的 Metal。
这为您提供了 OpenGL ES 2.0 的一致实现,这是 Chrome 想要用于网络的。 (这非常有用,因为 Windows OpenGL 实现因供应商而异,而且 macOS 很久以前就停止更新 4.1 版的 OpenGL 实现。
Skia 是一个更高级别的 API,可让您“在此处绘制矩形”和“在此处绘制此图像”等等(绘制文本;绘制路径;绘制曲线等)。使用高级语言和 Web Canvas API 获得的常用高级 API。
为了实现这些调用,Skia 将绘图命令转换为 GL、Metal 等较低级别的 API。Skia 可以针对的 API 之一是 ANGLE,以便 Skia 绘图获得跨平台的一致输出。