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