OpenGL 版本历史

一份关于OpenGL的编年史。

 

opengl 1.0 1992.7

 

 

opengl 1.1 1995.12

1995 年,SGI 推出了更为完善的OpenGL 1.1 版本。OpenGL 1.1 的性能比1.0 版提高甚多。其中包括改进打印机支持,在增强元文件中包含OpenGL 的调用,顶点数组( Vertex Array 的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。

 

opengl 1.2 1998.3

+

三维纹理:以前的OpenGL 只支持一维、二维纹理。

像素格式:新增加了GL_BGRA 等原来没有的像素格式。允许压缩的像素格式,例如GL_UNSIGNED_SHORT_5_5_5_1 格式,表示两个字节,存放RGBA 数据,其中R, G, B 各占5 个二进制位,A 占一个二进制位。

图像处理:新增了一个“图像处理子集”,提供一些图像处理的专用功能,例如卷积、计算柱状图等。这个子集虽然是标准规定,但是OpenGL 实现时也可以选择不支持它。

 

opengl 1.2.1 1998.10

+

没有加入任何新的功能,但是引入了“ARB 扩展”的概念。

 

opengl 1.3 2001.8

增加了立方纹理贴图、纹理环境、多重采样、纹理框架压缩等扩展指令,但是改进程度非常有限。

+

压缩纹理 :在处理纹理时,使用压缩后的纹理而不是纹理本身,这样可以节省空间(节省显存)和传输带宽(节省从内存到显存的数据流量)

多重纹理 :同时使用多个纹理。

多重采样:一种全屏抗锯齿技术,使用后可以让画面显示更加平滑,减轻锯齿现象。对于nvidia 显卡,在设置时有一项“3D 平滑处理设置”,实际上就是多重采样。通常可以选择2x, 4x ,高性能的显卡也可以选择8x, 16x 。其它显卡也几乎都有类似设置选项,但是也有的显卡不支持多重采样,所以是0x

 

opengl 1.4 2002.7

只加入了深度纹理/阴影纹理、顶点设计框架、自动纹理贴图等简单的功能。

+

深度纹理 :可以把深度值像像素值一样放到纹理中,在绘制阴影时特别有用。

辅助颜色:顶点除了有颜色外还有辅助颜色。在使用光照时可以表现出更真实的效果。

 

opengl 1.5 2003.7

包含ARB 制定的“正式扩展规格绘制语言”(OpenGL Shading Language v1.0 ),该语言用于着色对象、顶点着色、片断着色等扩展功能,同时也将作为下一代OpenGL 2.0 版本的内核。OpenGL 1.5 的变化还增加了顶点缓冲对象( VBO:Vertex Buffer Object 、非乘方纹理( 可提高纹理内存的使用效率) 以及阴影功能、隐蔽查询功能等等。其主要内容包括

l 顶点Buffer Object :进行顶点配列方式可以提高性能

l Shadow 功能:增加用来比较Shadow 映射的函数

l 隐蔽查询:为提高curling 性能采用非同步隐蔽测试

l 非乘方纹理:提高mipmap 等纹理内存的使用效率

l OpenGL Shading Language v1.0 :用于着色(shader) 对象、顶点着色以及片断着色的扩展功能

+

缓冲对象:允许把数据(主要指顶点数据)交由OpenGL 保存到较高性能的存储器中,提高绘制速度。比顶点数组有更多优势。顶点数组只是减少函数调用次数,缓冲对象不仅减少函数调用次数,还加快数据访问速度。

遮挡查询:可以计算一个物体有几个像素会被绘制到屏幕上。如果物体没有任何像素会被绘制,则不需要加载相关的数据(例如纹理数据)。

 

opengl 2.0 / glsl 1.0 2004.9

OpenGL 1.0 推出后的相当长的一段时间里,OpenGL 唯一做的只是增加了一些扩展指令集,这些扩展指令是一些绘图功能,像是ClearCoatMultisample 、视频及绘图的整合工具( 某些是通过OpenML 的努力而开发出来的,它本身属于OpenGL ARB 扩展指令之一。

OpenGL 2.0OpenGL 1.3 基础上进行修改扩充、五个方面的重大改进:①复杂的核心被彻底精简;②完全的硬件可编程能力;③改进的内存管理机制、支持高级像素处理;④扩展至数字媒体领域,使之跨越高端图形和多媒体范畴;⑤支持嵌入式图形应用。

为了在获得强大功能的同时保持理想的兼容性,OpenGL 2.0 经历以下两个发展阶段:第一个阶段注重兼容能力和平滑过渡,为此,OpenGL 2.0 核心将在精简后的OpenGL 1.3 功能模块的基础上加上可完全兼容的新功能共同组成,这种做法在满足兼容性的同时,还可将原有OpenGL 中数量众多、且相互纠缠不清的扩展指令进行彻底精简。 第一阶段的任务只是为了过渡,而第二阶段才是OpenGL 2.0 的真正成熟期。此时,ARB 将合成出一个“纯OpenGL 2.0” 内核,纯内核将包含更多新增加的“精简型API 函数”,这些函数具有完全的可编程特性、结构简单高效、功能强大且应用灵活。除了完成这项任务外,ARB 组织还得指导开发商抛弃繁琐的OpenGL 1.x 、转用更具弹性的“纯OpenGL 2.0”

+

可编程着色:允许编写一小段代码来代替OpenGL 原来的顶点操作/ 片段操作。这样提供了巨大的灵活性,可以实现各种各样的丰富的效果。

纹理大小不再必须是2 的整数次方。

点块纹理:把纹理应用到一个点(大小可能不只一个像素)上,这样比绘制一个矩形可能效率更高。

 

opengl 2.1 / glsl 1.2 2006.7

+

可编程着色:编程语言由原来的1.0 版本升级为1.2 版本。

缓冲区对象:原来仅允许存放顶点数据,现允许存放像素数据 PBO Pixel Buffer Object

 

opengl 3.0 / glsl 1.3 2008.7

OpenGL 3.0 仍然作为一个开放性和跨平台的3D 图形接口标准,增加了新版的shader 语言:GLSL 1.30 ,可以充分发挥当前可编程图形硬件的潜能。同时,OGL3.0 还引入了一些新的功能,例如顶点矩阵对象,帧缓存对象( FBO Frame Buffer Object 功能,32bit 浮点纹理和渲染缓存,基于阻塞队列的条件渲染,紧凑行半浮点顶点和像素数据,四个新压缩机制等等。

 

opengl 3.1 / glsl 1.4 2009.3

OpenGL 3.1 将此前引入的OpenGL 着色语言“GLSL”1.30 版升级到了1.40 版,通过改进程序增强了对最新可编程图形硬件的访问,还有更高效的顶点处理、扩展的纹理功能、更弹性的缓冲管理等等。宽泛地讲,OpenGL 3.13.0 版的基础上对整个API 模型体系进行了简化,可大幅提高软件开发效率。

OpenGL 3.1 主要新特性:纹理缓冲对象(Texture Buffer Object )、统一缓冲对象(UBOUniform Buffer Objects )、符号正常化纹理(Signed Normalized Textures )、基本元素重启(Primitive Restart )、实例化(Instancing )、拷贝缓冲接口(CopyBuffer API )……

 

opengl 3.2 / glsl 1.5 2009.8

OpenGL 3.2 在性能增强、画质提升、几何处理加速、Direct3D 程序导入简化等方面加入了大量新特性,并且和Khronos Group 组织的其它标准进行了深入整合,包括用于并行计算的OpenCL 、面向移动设备3D 图形的OpenGL ES 、创建3D webWebGL 等等。

- 增强顶点阵列和同步对象的性能,避免在CPUGPU 之间或者多个CPU 线程之间共享资源时的等待空闲。

- 改进管线可编程性,包括OpenGL Core 核心里的几何着色器。

- 着色器可直接处理纹理采样,提升立方体贴图画质和多重采样渲染弹性。

 

OpenGL ARB( 架构评审委员会) 工作组同时定义了新版OpenGL 着色语言“GLSL 1.50” ,以及两种新的ProfileCompatibility Profile( 兼容模式) 全面向下兼容旧版本的OpenGL 标准,支持现有应用程序;Core Profile( 核心模式) 则更加精炼,主要用于开发新的应用程序。

除此之外,Khronos Group 还定义了五种新的ARB 扩展,可以通过OpenGL 实现最新的GPU 图形特性。该功能得到认可并被广泛采纳后,会整合在未来版本OpenGL 规范的核心模式之中。

 

opengl 3.3 / glsl 3.3 2010.3

在旧时代显卡硬件上尽可能地加入了OpenGL 4.0GLSL 4.0 的功能,为开发人员提供最大程度的弹性和平台覆盖性。

 

opengl 4.0 / glsl 4.0 2010.3

一次重大升级,专门面向AMD Radeon HD 5000 系列( 以及尚未发布的NVIDIA GeForce GTX 400 系列) 提供了大量全新特性,使开发人员可以更好地使用这些新硬件,还进一步改善了与OpenCL 的协作性,用于计算密集型视觉应用的加速,另外继续支持OpenGL 3.2 引入的核心与兼容性档案,从而保证向下兼容性。

 

OpenGL 4.0 特别为程序开发人员设计了大量全新特性,包括:

两个新的着色阶段 ,让GPU 接手几何细分曲面工作,不再劳烦CPU

- 每采样片段着色器与可编程片段着色器输入位置,提高渲染质量和反锯齿弹性;

- 数据绘图由OpenGL 或者OpenCL 之类的外部API 负责生成,无需CPU 参与;

- 着色子程序,显著提升编程弹性;

- 经由新的对象类型采样对象(sampler objects) 实现纹理状态和纹理数据的分离;

64 位双精度浮点着色器操作和输入输出,提升渲染精度和质量;

- 性能改进,包括实例化几何着色器、实例化阵列和新的计时器序列。

 

opengl 4.1 / glsl 4.1 2010.7

OpenGL 4.1 核心规范主要新功能:

- 全面兼容OpenGL ES 2.0 API ,方便移动和桌面平台之间的移植。

- 支持着色器程序对象二进制文件的查询和载入,节省重编译时间。

- 支持将程序与编程阶段单独绑定,提高编程弹性。

- 支持64 位浮点组件顶点着色单元输入,提高几何精度。

- 支持渲染界面多重视角,提高渲染弹性。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值