">OpenGL ES 3.0示例
3.0版本的OpenGL ES在OpenGL 3.x 和 4.x的基础上增加了许多新的功能,比如着色器的功能变得更加强大、全面支持32位整数和浮点型数据。
OpenGL ES 3.0可以让GPU处理更复杂的纹理,如任意尺寸的纹理、浮点纹理等。其中最重要的就是新的纹理算法带来了更好的纹理压缩表现(包括ETC2和EAC标准),以及一些像Instance Rendering、Occlusion Queries、Transform Feedback这样的新的硬件加速特性。
这些更新为OpenGL ES的移动开发人员带来很大的便利,之前很多开发人员都会在APK中为不同设备创建不同的textures,但现在他们可以在移动端和桌面端使用相同的组件。由于压缩方法有所改进,现在的压缩包比起以前小了很多,在提升应用程序下载速度的同时,也降低了内存的占用空间。
即使新增了如此多的功能,OpenGL在性能上还是稍稍落后Direct3D 10和Open GL 3.2,其中最大的缺陷是OpenGL ES 3.0不支持几何渲染,这些几何渲染可以生成新的线条和轮廓,使得曲面更加细分:选择一个现有的图形,加入新的线条,让曲线变得更加顺滑,整个图形看起来会更加美观。
OpenGL 4.3
除了OpenGL ES 3.0,Khronos 集团也在桌面端推出了OpenGL 4.3,新版标准不仅带来了更好的图形表现,同时也增加了更多之前没有的效果,比如不同类型的模糊效果。此外,开发者还可以不通过OpenCL直接使用OpenGL技巧来使用运算着色器(compute shaders)释放GPU上的任务。这样开发者可以在游戏中不耗用更多CPU功耗的情况下实现更好的物理和人工智能的模拟。
从当前的现状来看,Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。
最后通过一张图来简略回顾下OpenGL 20年的风雨历程:
以NVIDIA公司于2012年3月22日发布的新一代Kepler架构显卡GeForce GTX 680为例,OpenGL的三角形输出能力、像素输出能力、浮点计算能力已经分别达到20前的1800倍、60倍、4830倍。
PS:关于OpenGL,我们所熟悉的李开复老师在SGI工作的时候就主持过基于OpenGL的多媒体应用的研究,当时开老师曾经希望说服微软采用OpenGL,但最终微软却用自己的亲儿子Direct 3D替代OpenGL。DirectX与OpenGL的战争由此展开。一开始OpenGL有着较大的优势,但自从2001年微软推出DirectX 8,并引入了两项对于整个电脑绘图界来说极为重要的创新与变革Vertex Shader 以及Pixel Shader后形势开始逆转,DirectX 9的推出更是让DirectX开始领先。然而就在数天前,著名游戏开放商Valve发布了一条消息重提当年恩怨,称即便在Windows环境这个主场,Direct X的表现也不如OpenGL。