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
    评论
OpenGL 是一种跨平台的图形 API,它定义了一套用于创建 2D 和 3D 图形的标准接口。OpenGL版本更替历史如下: 1.0 版本OpenGL 1.0 版本于1992年发布,包含了最基本的图形渲染功能,如绘制基本几何图形、着色、光照、深度测试等。 1.1 版本OpenGL 1.1 版本于1997年发布,增加了纹理映射、多边形偏移、模板测试、透明度排序等功能。 1.2 版本OpenGL 1.2 版本于1998年发布,增加了新的几何图形类型、纹理压缩、多重纹理、像素操作等功能。 1.3 版本OpenGL 1.3 版本于2001年发布,增加了纹理环绕、多重采样、纹理压缩算法等功能。 1.4 版本OpenGL 1.4 版本于2002年发布,增加了可编程的顶点和像素处理、多重纹理、混合模式等功能。 1.5 版本OpenGL 1.5 版本于2003年发布,增加了顶点缓存、缓存对象、定时器查询等功能。 2.0 版本OpenGL 2.0 版本于2004年发布,增加了可编程着色器、多渲染目标、高精度浮点数等功能。 2.1 版本OpenGL 2.1 版本于2006年发布,修复了一些漏洞和错误,没有增加新的功能。 3.0 版本OpenGL 3.0 版本于2008年发布,增加了纹理的非 power-of-two 支持、多重采样渲染缓冲区、分离顶点和片元着色器等功能。 3.1 版本OpenGL 3.1 版本于2009年发布,增加了纹理缓存、OpenGL Shading Language 1.40 等功能。 3.2 版本OpenGL 3.2 版本于2009年发布,增加了几何着色器、纹理数组、纹理缓存等功能。 3.3 版本OpenGL 3.3 版本于2010年发布,增加了新的标准化整数数据类型、变量布局修饰符等功能。 4.0 版本OpenGL 4.0 版本于2010年发布,增加了 tessellation、compute shader、shader subroutines、transform feedback instanced rendering 等功能。 4.1 版本OpenGL 4.1 版本于2010年发布,增加了全新的 OpenGL Shading Language 4.10、无缝立方体贴图、纹理查询等功能。 4.2 版本OpenGL 4.2 版本于2012年发布,增加了显式着色器操作、纹理压缩算法、图像加载和存储等功能。 4.3 版本OpenGL 4.3 版本于2012年发布,增加了计算着色器、缓存同步、新的纹理压缩算法等功能。 4.4 版本OpenGL 4.4 版本于2013年发布,增加了新的着色器布局限定符、缓存多重绑定、高效定量查询等功能。 4.5 版本OpenGL 4.5 版本于2014年发布,增加了并行着色器编程、新的指令集、纹理压缩算法等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值