一、常见图形编程接口

我们常见的图形编程接口主要分为如下派系:

  1. OpenGL
  2. DirectX
  3. Vulkan
  4. Metal

下图展示了各个派系的分支及特点:

二、ANGLE

ANGLE (全称 Almost Native Graphics Layer Engine)是Google发起的开源项目,主要用在 Chromium 项目里面,Google创建这个项目是为了让WebGL能够间接调用硬件平台支持的图形API,如Windows平台上调用DirectX图形接口。

目前ANGLE支持Windows, Mac, Linux, iOS和Android平台。

WebGL基于OpenGL ES开发,而在Windows系统上默认只安装了OpenGL 1.1驱动程序,如果用户没有升级更新的OpenGL驱动,则网页中的WebGL将只能使用软件渲染(即CPU绘制图形),显然这种方式无法利用显卡GPU的优势,图形渲染性能和效果都不好。为了改版这个现状,Google公司开发了ANGLE项目。

例如在Windows平台,ANGLE项目通过将DirectX接口进行二次封装,封装后的接口与OpenGL ES接口非常类似,这样当程序代码调用ANGLE提供的类OpenGL ES接口时,ANGLE就可以在内部判断是调用OpenGL接口还是调用DirectX接口,从而实现了当用户系统上没用安装OpenGL驱动时,自动使用合适的DirectX绘制接口。

项目地址:https://github.com/google/angle

三、EGL

EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,OpenGL ES 的平台无关性正是借助 EGL 实现的,EGL 屏蔽了不同平台的差异(Apple 提供了自己的 EGL API 的 iOS 实现,自称 EAGL)。

我们通常在安装目录看到的libEGL.dlllibGLESv2.dll文件就是EGL在Windows平台的实现。WebGL基于OpenGL ES实现,所以使用了WebGL和OpenGL ES的程序都会带上这2个文件。