WebGL起源

目前使用广泛的几种三维图形渲染技术有OpenGL, Direct3D, vulkan以及Metal,其中Direct3D是微软DirectX技术的一部分,是一套由微软控制的编程接口(API),主要用于windows平台;Vulkan是Khronos组织(该组织以OpenGL闻名)发布的新一代图形API,跨平台的,可以在Windows,Linux和Android平台上使用;Metal是苹果的图形API,主要用于OS X/IOS平台;

下面我们重点介绍和WebGL有关的OpenGL,OpenGL具有开放、免费以及跨平台的特性,可以多种设备上使用;
image.png

上面是WebGL时间线,几个主要的节点是1992首次发布;2003年从OpenGL衍生出一个特殊版本OpenGL ES,主要用于嵌入式计算机、智能手机、家用游戏机等设备;2011年基于OpenGL ES 2.0发布WebGL 1.0;2017年基于OpenGL ES 3.0发布WebGL 2.0。
openGL-openGLES,wengl.png

WebGL程序的结构

相对于普通网页,使用WebGL的网页,在引入WebGL以后,还需要加入着色器语言GLSL,也就是WebGL页面包含了三种语言:HTML5, JavaScript和GLSL语言。

未命名文件 (1).png
原理上要使用webgl必须按照OpenGL驱动程序,但是我们发现windows在chrome和Firefox中使用webgl,即使我们没有安装OpenGL驱动也是可以正常运行的,这是因为chrome中实现了一个封装层ANGLE,ANGLE 是一个转换器而不是模拟器,就是说他更像是提供了 OpenGL ES 的实现,显卡本身是支持任何通用的光栅化图形管线的,ANGLE 只是为显卡提供了这部分缺失的驱动,不会因为这个损失性能。
image.png
通过上图webgl系统架构图,可以看出ANGLE 作为封装层既可以调用OpenGL底层api也可以调用Direct3D底层api;这也是webgl跨平台的一个原因;

了解更多可以参考 WebGL.Insights