OpenGL 版本历史

来源:互联网 发布:局域网视频直播软件 编辑:程序博客网 时间:2024/04/28 18:33

一份关于OpenGL的编年史。

 

opengl1.01992.7

 

 

opengl1.1 1995.12

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

 

opengl1.2 1998.3

+

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

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

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

 

opengl1.2.11998.10

+

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

 

opengl1.3 2001.8

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

+

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

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

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

 

opengl1.4 2002.7

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

+

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

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

 

opengl1.5 2003.7

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

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

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

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

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

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

+

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

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

 

opengl2.0 / glsl 1.02004.9

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

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

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

+

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

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

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

 

opengl2.1 / glsl 1.2 2006.7

+

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

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

 

opengl3.0 / glsl 1.3 2008.7

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

 

opengl3.1 / glsl 1.4 2009.3

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

OpenGL3.1主要新特性:纹理缓冲对象(TextureBuffer Object)、统一缓冲对象(UBOUniformBuffer Objects)、符号正常化纹理(SignedNormalized Textures)、基本元素重启(PrimitiveRestart)、实例化(Instancing)、拷贝缓冲接口(CopyBufferAPI)……

 

opengl3.2 / glsl 1.5 2009.8

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

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

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

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

 

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

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

 

opengl3.3 / glsl 3.3 2010.3

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

 

opengl4.0 / glsl 4.0 2010.3

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

 

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

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

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

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

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

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

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

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

 

opengl4.1 / glsl 4.12010.7

OpenGL4.1核心规范主要新功能:

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

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

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

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

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

 

 

原创粉丝点击