OpenGL 版本历史
来源:互联网 发布:局域网视频直播软件 编辑:程序博客网 时间:2024/04/28 18:33
一份关于OpenGL的编年史。
【opengl1.0】 1992.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.1】1998.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.0】 2004.9
OpenGL1.0推出后的相当长的一段时间里,OpenGL唯一做的只是增加了一些扩展指令集,这些扩展指令是一些绘图功能,像是ClearCoat、Multisample、视频及绘图的整合工具(某些是通过OpenML的努力而开发出来的,它本身属于OpenGLARB扩展指令之一。
OpenGL2.0在OpenGL1.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版本。
缓冲区对象:原来仅允许存放顶点数据,现允许存放像素数据(PBO:PixelBuffer Object)。
【opengl3.0 / glsl 1.3】 2008.7
OpenGL3.0仍然作为一个开放性和跨平台的3D图形接口标准,增加了新版的shader语言:GLSL1.30,可以充分发挥当前可编程图形硬件的潜能。同时,OGL3.0还引入了一些新的功能,例如顶点矩阵对象,帧缓存对象(FBO:FrameBuffer Object)功能,32bit浮点纹理和渲染缓存,基于阻塞队列的条件渲染,紧凑行半浮点顶点和像素数据,四个新压缩机制等等。
【opengl3.1 / glsl 1.4】 2009.3
OpenGL3.1将此前引入的OpenGL着色语言“GLSL”从1.30版升级到了1.40版,通过改进程序增强了对最新可编程图形硬件的访问,还有更高效的顶点处理、扩展的纹理功能、更弹性的缓冲管理等等。宽泛地讲,OpenGL3.1在3.0版的基础上对整个API模型体系进行了简化,可大幅提高软件开发效率。
OpenGL3.1主要新特性:纹理缓冲对象(TextureBuffer Object)、统一缓冲对象(UBO:UniformBuffer Objects)、符号正常化纹理(SignedNormalized Textures)、基本元素重启(PrimitiveRestart)、实例化(Instancing)、拷贝缓冲接口(CopyBufferAPI)……
【opengl3.2 / glsl 1.5】 2009.8
OpenGL3.2在性能增强、画质提升、几何处理加速、Direct3D程序导入简化等方面加入了大量新特性,并且和KhronosGroup组织的其它标准进行了深入整合,包括用于并行计算的OpenCL、面向移动设备3D图形的OpenGLES、创建3D web的WebGL等等。
-增强顶点阵列和同步对象的性能,避免在CPU和GPU之间或者多个CPU线程之间共享资源时的等待空闲。
-改进管线可编程性,包括OpenGLCore核心里的几何着色器。
-着色器可直接处理纹理采样,提升立方体贴图画质和多重采样渲染弹性。
OpenGLARB(架构评审委员会)工作组同时定义了新版OpenGL着色语言“GLSL1.50”,以及两种新的Profile:CompatibilityProfile(兼容模式)全面向下兼容旧版本的OpenGL标准,支持现有应用程序;CoreProfile(核心模式)则更加精炼,主要用于开发新的应用程序。
除此之外,KhronosGroup还定义了五种新的ARB扩展,可以通过OpenGL实现最新的GPU图形特性。该功能得到认可并被广泛采纳后,会整合在未来版本OpenGL规范的核心模式之中。
【opengl3.3 / glsl 3.3】 2010.3
在旧时代显卡硬件上尽可能地加入了OpenGL4.0、GLSL4.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.1】2010.7
OpenGL4.1核心规范主要新功能:
- 全面兼容OpenGLES 2.0 API,方便移动和桌面平台之间的移植。
- 支持着色器程序对象二进制文件的查询和载入,节省重编译时间。
- 支持将程序与编程阶段单独绑定,提高编程弹性。
- 支持64位浮点组件顶点着色单元输入,提高几何精度。
- 支持渲染界面多重视角,提高渲染弹性。
- OpenGL 版本历史
- OpenGL的版本历史和发展
- OpenGL的版本历史和发展
- OpenGL的版本历史和发展
- OpenGL的版本历史和发展
- OpenGL的版本历史和发展
- OpenGL的版本历史和发展
- 从未停止!OpenGL的版本历史和发展
- 从未停止!OpenGL的版本历史和发展
- 历史版本
- 1.1. OpenGL历史 OpenGL History
- 【转帖】OpenGL的版本历史和发展 (2013-07-24 14:57:28)
- opengl版本
- OpenGL版本
- opengl 版本
- OpenGL版本
- OpenGL版本
- CrapApi历史版本&版本升级
- 监听器Listener
- 用Nohup命令让Linux下的程序在后台执行
- FireFox下GridView表格线显示、隐藏的问题
- js更新table表,再使用tablesorter进行排序,请问这个如何操作?
- iphone viewWillAppear not firing
- OpenGL 版本历史
- 改变产品属性集的插件
- UINavigationController and viewWillAppear / viewDidAppear
- 小试FlexUnit
- java 作业 网摘
- SSI整合以及缓存的配置(struts2.2.1.1 + spring3.0.1 + ibatis2.3.0.677)
- 堆栈中的EIP EBP ESP
- 狮子分肉的故事:反映了现实中的管理问题
- U盘开发之量产工具