赞
踩
显卡要安装显卡驱动程序,通过显卡驱动程序暴露的 API 我们就可以操作 GPU 完成图形处理器的操作。问题是,显卡驱动和普通编程界的汇编一样,底层,不好写,于是各大厂就做了封装。于是 OpenGL 应运而生,负责上层接口封装并与下层显卡驱动打交道,但是,众所周知,它的设计风格已经跟不上现代 GPU 的特性了。
上个世纪 90 年代提出了 OpenGL 技术,WebGL 是基于 OpenGL ES 做出来。OpenGL 在那个显卡羸弱的年代发挥了它应有的价值。
Microsoft 为此做出来最新的图形API 是 Direct3D,Apple 为此做出来最新的图形API 是 Metal,有一个有名的组织 -- Khronos 做出来了 Vulkan。这就是现代三大图形 API。
OpenGL 在 2006 年丢给了 Khronos 管,现在各个操作系统基本都没怎么装这个很老的图形驱动了。那么,基于 OpenGL ES 的 WebGL 为什么能跑在各个操作系统的浏览器?因为 WebGL 再往下已经可以不是 OpenGL ES 了,在 Windows 上现在是通过 D3D 转译到显卡驱动的,在 macOS 则是 Metal,只不过时间越接近现在,这种非亲儿子式的实现就越发困难。苹果的 Safari 浏览器最近几年才姗姗支持 WebGL 2.0,而且已经放弃了 OpenGL ES 中 GPGPU 的特性了,或许看不到 WebGL 2.0 的 GPGPU 在 Safari 上实现了。
下一代的 Web 图形接口已经不是 GL 一脉的了,不叫 WebGL 3.0,而是采用了更贴近硬件名称的 WebGPU。WebGPU 从根源上和 WebGL 就不是一个时代的,无论是编码风格还是性能表现上。
WebGL 的编程风格延续了 OpenGL 的风格。学习过 WebGL 接口的同学应该用过:gl
变量,即 WebGLRenderingContext
对象,WebGL 2.0 则是 WebGLRenderingContext2。
下面是创建顶点和片元着色器的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。