WebGL是什么

81 阅读3分钟

一、前言

早期的我们,对于计算机等电子设备的交互基本上都是2d界面的,完全没有三维世界的立体感,一个是硬件的不支持, 对于逼真的3d场景,需要专门的图形加速GPU来进行计算,性能要求还是有的;一个是底层编码的繁琐性,让大多数人望而却步。

而如今,基本上所有的电子设备的CPU里都内置了3d图形加速,甚至还有专门的GPU来处理3d渲染。

基于这种情况下,浏览器的技术也得以更新换代,有了硬件的支撑,底层编码的繁琐性总是会有天才来进行简化的。

20113月,Kronos Group创建的WebGL腾空出世,它不需要JVM 就能自由运行,仅需要一个网络浏览器就能自由运行。

在此之前有Java 应用程序(JVM)和 Adobe 提供的 Stage3D API(Flash、AIR),

前者是比较难以建立依赖关系,不好用。

后者是因为flash是专用软件,所以没有成为网络标准。(也差不多寄了,现在浏览器都不支持flash了)

二、WebGL和其他的关系

1、WebGL

WebGL(Web Graphics Library)是Web上3D图形的新标准,它是为渲染2D图形和交互式3D图形而设计的。

WebGL 提供了与 ES 2.0(嵌入式系统)类似的功能,并且在现代 3D 图形硬件上表现良好。

WebGL是一个可与 HTML5 一起使用的 JavaScript API。

WebGL 代码写在 HTML5 的 <canvas> 标记内。它是一种规范,允许 Internet 浏览器访问使用它们的计算机上的图形处理单元 (GPU)。

2、 OpenGL

OpenGL(开放图形库)是用于 2D 和 3D 图形的跨语言、跨平台 API。它是命令的集合。

OpenGL存在于windows、部分unix和mac os平台,它高效利用了图形加速硬件GPU,当今OpenGL是视频行业领域中用于处理2D/3D图形的最为广泛接纳的API,基本上市面里的CAD、AR虚拟现实、3d类游戏等等,都是基于OpenGL开发的。

3、WebGL与OpenGL

WebGL是 OpenGL 的 JavaScript 绑定。WebGL 1.0 是其最新版本,由 khronos 组维护。

WebGL源自 OpenGL 的 ES 2.0 库,这是一个用于手机和其他移动设备的低级 3D API。

三、WebGL的优势

1、支持js编程

可以使用vue、jQuery等第三方js库配合使用。

2、支持移动浏览器

移动设备普及的现在,如果3d渲染不能支持移动浏览器的话,将会是一大遗憾。

3、开源

开源意味着能读取源码,了解内部的工作原理等等。(不过太难了看不懂- -)

4、不用额外编译和设置

WebGL集成在html5里,同时集成了js无需编译和自动内存管理的特性。

四、现状

虽然已经简化了很多步骤,但是单纯用WebGL开发,代码量还是比较大的。

如果场景比较复杂,那代码量不敢想象,直接劝退。

所以说WebGL的api仍然是低级别的。

创建复杂场景,我们应选用更高级的库或者框架,比如three.js等。

关系,从上往下依次调用

所在层面级别名称
浏览器层面高级别apithree.js等
浏览器层面低级别apiWebGL
操作系统层面3d驱动OpenGL
硬件层面3d硬件GPU

ps: 我是地霊殿__三無

Snipaste_2022-07-19_15-30-26.jpg