一、常见图形编程接口
我们常见的图形编程接口主要分为如下派系:
- OpenGL
- DirectX
- Vulkan
- 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绘制接口。
三、EGL
EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,OpenGL ES 的平台无关性正是借助 EGL 实现的,EGL 屏蔽了不同平台的差异(Apple 提供了自己的 EGL API 的 iOS 实现,自称 EAGL)。
我们通常在安装目录看到的libEGL.dll
和libGLESv2.dll
文件就是EGL在Windows平台的实现。WebGL基于OpenGL ES实现,所以使用了WebGL和OpenGL ES的程序都会带上这2个文件。