OpenGL ES 3.0 增加大量新特性
OpenGL 规范被广泛用于 PC 和移动设备。在昨天的 SIGGRAPH 2012 大会上,OpenGL 背后公益性组织科纳斯组织(Khronos Group)公布了新版本:
- 面对移动领域的 OpenGL ES 版本更新到 3.0;
- 面对桌面领域的 OpenGL 版本更新到 4.3;
- 可运用在增强现实领域的图形接口 OpenVL。
三者中,OpenGL ES 3.0 成为主角,因为它是 Android、iOS 等主流移动平台上的图形接口标准。
OpenGL ES 3.0 带来很多新特性,根据 AnandTech 的解释:
- 支持更多缓冲区对象。在 OpenGL ES 2.0 时中,缓冲区对象的规范有模糊之处。名字一样缓冲区对象,在实际渲染中对表现却有细微的差别。针对这个问题 OpenGL ES 3.0 制定了更详细对格式规范。新版 OpenGl ES 还增加对 Uniform Buffer Object 的支持;
- 新版 GLSL ES 3.0 着色语言,支持 32 位整数和浮点数据类型以及操作。之前版本的着色语言只支持精度更低的,这样虽然能够加快计算的速度,所需的资源也更少,但当着色器的复杂度增加,出错也随之增加。同时,新版着色语言的语法更贴近 GLSL;
- 支持遮挡查询(Occlusion Query)以及几何体实例化(Geometry Instancing)。通过遮挡查询,能够让 GPU 知道 3D 场景中,哪些物体被其它物体完全遮挡,这些完全被遮挡的物体 GPU 不会去渲染。几何体实例化是通过对具有相同顶点数据的几何体,赋予不同的空间位置、颜色或纹理等特征,从而创造出不同实例对象的技术。这两个特性都能够节省硬件资源,提高 3D 图形渲染的性能。
- 增加多个纹理的支持。包括浮点纹理、深度纹理、顶点纹理等等。
- 多重渲染目标(Multiple Render Targets),让 GPU 一次性渲染多个纹理。
- 多重采样抗锯齿(MSAA Render To Texture),让 3D 物体对边缘不出现毛刺,可提升图像效果。
- 使用统一的纹理压缩格式 ETC:多年来阻碍 OpenGL 发展的一大顽疾,就是没有统一的纹理压缩格式,包括 S3TC、GPUs、PVPRTC、ETC 等等。因为没有一个统一标准,开发者不得不因为不同的硬件环境而将纹理重复压缩多次——尤其对于 Android 开发者而言,这个过程苦不堪言。显然,统一纹理压缩格式,能够提高开发者对开发效率。但现实中,统一标准这类事情的进展从来没有快过。ETC 的推广要看之后开发者与厂商会做出怎样的反应。
OpenGL ES 3.0 这一次更新无疑增加了大量新特性,总体而言,能够让移动平台游戏画面更加漂亮,还能让开发者更加节省力气,提高机器 3D 图像的性能。科纳斯回顾了 OpenGL ES 的发展历程,在 2007 年 8 月,初代 iPhone 和 Android 都内置了 OpenGL ES 1.x;2009 年 10 月,iPhone 3GS 和 Android 2.2 内置了 OpenGL ES 2.0。结果 OpenGL ES 在移动市场的占有率大增,从 2006 年的 20% 到今年的 90% 以上。
与 OpenGL ES 在移动市场混得风生水起相比,OpenGL 在桌面市场却备受微软的 3D 图形接口 DirectX 的打压。和网景的遭遇相似,作为 1992 年就创立的 3D 图形接口标准,OpenGL 早先占领绝大多数市场份额。但 1996 年,微软推出自行开发的 3D 图形接口 DirectX,凭借 Windows 的垄断地位,最终成为第一。所幸 OpenGL 一直是一个开放性的标准,依靠协会成员的捐助生存,而且因为发展得要比 DirectX 早,被一些高端的图形设备和专业应用沿用,OpenGL 并未像网景那般消失在历史洪流。而这几年,由于天生的支持跨平台特性,令 OpenGL 能够适应移动时代“碎片化”的特征,成为移动开发人员的首选——这样的经历和 ARM 也有相似之处。
因为移动市场的火爆,一些游戏公司也开始加入 OpenGL 阵营。最著名的当属开发处《虚幻》游戏引擎的 Epic Games,在 2010 年宣布加入 OpenGL 之前的十年,它一直坚持使用微软的 DirectX 开发游戏。
最近 OpenGL 的发展速度在加快,其表现受到游戏业界的肯定。开发出《半条命》、《CS》等著名射击游戏的 Valve 最近宣称, OpenGL 要比 DirectX 性能更好。公司之前测试了《半条命 2》、《Left 4 Dead》以及《Dota 2》的游戏执行速度,在相同的硬件条件下,这些游戏在 Ubuntu 下测试 L4D2,最高帧数为 315 fps,比 Windows 快 20%。不过,Valve 对 Windows 的态度一直比较差,这个结果如何衡量,就看你自己了。
题图来自 Flickr 的 roland.batroff,是他用 OpenGL 绘制的作品之一