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 绘制的作品之一
相关推荐
在标签中提到的“elasticsearch”、“大数据”和“全文检索”与OpenGL ES 3.0编程没有直接关联,它们属于数据搜索和分析领域。Elasticsearch是一种流行的分布式搜索引擎,用于实时大数据分析和全文检索。它通常与...
OpenGL ES 3.0在前一版本的基础上进行了大量的性能提升和功能增强,为开发者提供了更强大的图形编程能力。 首先,OpenGL ES 3.0引入了更多的着色器语言特性。GLSL (OpenGL Shading Language) 更新至3.00版本,增加...
2. OpenGL ES 3.0相较于前版本,对API进行了扩展和改进,提高了渲染能力,比如在着色器中引入了更多的高级特性。 3. 《OpenGL ES 3.0 Programming Guide》为开发者提供了OpenGL ES 3.0规范的坚实入门,提供了大量的...
在《OpenGL ES 3.0游戏开发上卷》中,吴亚峰详细讲解了这些新特性的使用方法。浮点纹理的使用可以让开发者创建更加真实的光照和阴影效果,几何着色器则允许在GPU级别动态生成和修改几何数据,极大地增强了图形的灵活...
OpenGL ES3.0是这个标准的第三个主要版本,它带来了大量更新和改进,使得开发者可以利用现代图形硬件的高级特性来创建更为复杂和精细的图形应用。 在“OpenGL ES3.0 编程指南 第二版”中,提及的知识点包括: 1. *...
1. **新特性**:OpenGL ES 3.0引入了多个新特性,如浮点纹理支持、多重采样抗锯齿、顶点数组对象、纹理立方体映射阵列、颜色编码和混合选项的扩展等。这些新特性极大地增强了开发者创造复杂3D场景的能力。 2. **...
原书第2版更新了针对OpenGL ES 3.0的新特性和最佳实践,为开发者提供了深入的理解和实践指导。 OpenGL ES(Embedded Systems的OpenGL)是桌面版OpenGL的一个子集,专为资源有限的设备设计,如智能手机、平板电脑和...
未来的版本可能会进一步优化性能、增加新的特性,并且更好地适应新兴的技术趋势,如机器学习和人工智能在图形领域的应用。 综上所述,OpenGL ES 3.0 是一款极具潜力的图形库,它不仅适用于当前的移动设备,也将成为...
通过阅读《OpenGL ES 3.0编程指南 原书第2版》,读者将了解到如何利用这些新特性构建高效、高质量的3D应用。书中不仅涵盖了理论知识,还包含大量实例和实战经验,帮助开发者快速上手并掌握OpenGL ES 3.0的核心概念和...
本书受到行业内图形技术专家的高度评价,它不仅仅介绍了OpenGL ES 3.0的基础知识,而且也深入探讨了API中的新特性,比如新的着色器语言、纹理压缩格式、帧缓冲技术以及其他的改进功能。书中内容条理清晰、组织良好,...
OpenGL ES 3.0是该系列中的最新版本,它在先前版本的基础上增加了新的特性和功能,包括对高级着色语言GLSL ES的支持、更高级的渲染功能以及对多种图形性能的提升。 该书被多位图形技术领域的专家强烈推荐。他们提到...
OpenGL ES 3.0相较于前一版本(2.0)有显著的提升,引入了大量新特性和功能,旨在提高性能和图形质量。其中的关键改进包括: 1. **浮点纹理**:支持浮点格式的纹理,允许在纹理数据中存储和处理浮点数值,增强了...
由资深OpenGL技术专家亲笔撰写,全面介绍OpenGL ES 3.0的各种特性及新增功能,通过大量已经编译和测试过的实例,详细讲解OpenGL ES 3.0中的应用程序接口(API)和图形管线,既涵盖简单图形的渲染方法,又深入介绍逐...
在本书《OpenGL ES 3.0 Programming Guide》中,作者Dan和Budirijanto为开发者提供了一个全面的参考指南,旨在帮助开发者理解和掌握OpenGL ES 3.0的核心概念和高级特性。该书不仅包含了对OpenGL ES 3.0规范的介绍,...
OpenGL ES 3.0相较于之前的2.0版本,带来了许多新特性,旨在提高性能、增强功能并简化开发流程。 1. **着色器语言(GLSL ES)**:OpenGL ES 3.0引入了GLSL ES 3.00,这是一种用于编写顶点和片段着色器的语言,支持...
压缩包中的"OpenGLES3.0编程指南"很可能是该书的电子版,包含了完整的章节内容和可能的示例代码,是学习和参考OpenGL ES 3.0技术的重要资源。通过阅读和实践,你将能够熟练地在移动设备上构建高性能的3D图形应用。
在本文中,我们将深入探讨OpenGL ES 3.0的基础知识、新特性以及如何利用这些特性来构建高性能的游戏。 一、OpenGL ES 3.0简介 OpenGL ES(Embedded Systems)是OpenGL的一个子集,专为嵌入式系统如智能手机和平板...
在这个"openGLES3.0Example_6_MapBuffers"示例中,我们关注的是如何利用映射缓冲区对象(Mapped Buffer Objects, MBOs)来提升OpenGL ES 3.0的渲染效率。 映射缓冲区对象是OpenGL ES中的一个关键特性,允许开发者将...
与早期的OpenGL ES版本相比,ES 3.0引入了大量新特性,如顶点数组对象(VAOs)、纹理数组、浮点纹理、多采样抗锯齿、着色器存储块、计算着色器等,这些都极大地提升了图形处理能力。 1. **顶点数组对象 (VAOs)**:...