OpenGL的版本号历史和发展

Posted wzzkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL的版本号历史和发展相关的知识,希望对你有一定的参考价值。

来源请注明。本文永久地址为http://www.cnblogs.com/vertexshader/articles/2917540.html

OpenGL®作为业界最为广泛使用的2D和3D图形接口标准。应用在成千上万的各式各样的计算机的程序中。从初期的崭露头角,到与Direct3D激烈竞争。后经历黯淡被Khronos接手又发扬光大。已经历经波折发展了20年。

由于过去的黯淡。至今甚至仍有人站在错误的时间角度觉得它是落后的——它从未停止它前进的步伐,这篇文章就来简述OpenGL的版本号历史和发展。

 

OpenGL 1.0

公布时间: 1992年1月

OpenGL的最早版本号OpenGL 1.0由Mark Segal和Kurt Akeley公布于1992年1月。从这之后。OpenGL每隔一段时间都会公布一个新版本号的规范,这些规范定义了一些显卡必须支持的新扩展。

这就决定了OpenGL的每一个版本号事实上就是由各个扩展组成的,当硬件的驱动全部支持对应的扩展的时候,对应的OpenGL版本号就被支持了。

 

OpenGL 1.1

公布时间:1997年1月

扩展

特性添加

GL_EXT_vertex_array

 Vertex arrays

GL_EXT_polygon_offset

Polygon offset

GL_EXT_blend_logic_op

 Logical operation

GL_EXT_texture

 Internal texture formats, texture proxy, and texture env

GL_EXT_copy_texture

GL_EXT_subtexture

 Copy texture and subtexture from framebuffer

GL_EXT_texture_object

 Texture object

 

时隔5年OpenGL才公布新的版本号OpenGL 1.1,而Direct3D的出现(尤其是红色警戒的大卖)使得OpenGL感觉到了压力。

顶点数组(Vertex arrays)的出现代替了glVertex*这类马上模式画图函数,多个数据能够被一个函数调用绘制了。降低了调用函数带来的CPU循环开销。polygon offset攻克了z-fighting和stitching的问题;在pre-fragment operation開始支持逻辑操作(logic operation)。纹理方面開始支持纹理代理(texture proxy)和纹理环境映射(texture environment)。以及从帧缓冲(frameuffer)复制像素至texture或者subtexture;纹理对象(texture object)的出现改变了过去仅仅能使用显示表(display list)来静态地使用纹理的方法。如今纹理和參数(texture parameter)能被改变了。

OpenGL 1.2

公布时间:1998年3月16日

 

扩展

特性

GL_EXT_texture3D

Three-dimensional texture 

GL_EXT_bgra

BGR or BGRA pixel format

GL_EXT_packed_pixels

 Packed pixel formats

GL_EXT_rescale_normal

 Normal rescaling

GL_EXT_separate_specular_color

 Separate specular color

GL_SGIS_texture_edge_clamp

 Texture coordinate edge clamping

GL_SGIS_texture_lod

 Texture LOD control

GL_EXT_draw_range_elements

 Vertex array draw element range

 这个版本号的OpenGL開始支持能够用于体渲染(volume rendering)和体纹理(solid texture)的texture 3D;BGRA和BGA的出现主要是为了兼容某些平台和硬件;包装像素(pack pixel)的出现使得像素能够在不同的对象之间进行像素传输(pixel transfer),这也就是像素缓冲对象(pixel buffer object)的前身;GL_SGIS_texture_edge_clamp扩展的出现将texture coordinate规范在[0,1]这个区间;GL_SGIS_Texture_lod扩展则带来了重要的MipMap技术,能够通过对纹理參数(texture parameter)的控制来完毕对MipMap的控制。

 

OpenGL 1.2.1

公布时间:1998年10月14日

 这个版本号的OpenGL没有什么重大的改变,可是专门介绍了ARB扩展的概念。ARB扩展是经过OpenGL ARB认证的扩展。这种扩展将被广泛地实现。

 

OpenGL 1.3

公布时间:2001年8月14日

扩展

特性添加

GL_ARB_texture_compression

 compressed texture format

GL_ARB_texture_cube_map

 texture cube

GL_ARB_multisample

 MSAA(multisample anti-aliasing

GL_ARB_multitexture(removed)

 multi-texture

GL_ARB_texture_env_add

GL_ARB_texture_env_combine

GL_ARB_texture_env_dot3

Texture add env mode, texture combine env mode, texture dot3 env mode

GL_ARB_texture_border_clamp

 Texture border clamp

GL_ARB_transpose_matrix

 transpose matrix 

这个版本号開始支持压缩纹理(compressed texture),能够有效地降低存储和带宽的压力,如今广泛的应用于各种对存储大小和带宽敏感的手持设备上。立方体纹理(texture cube)的出现主要用于在天空盒(skybox)、动态反射(dynamic reflection)等技术上;而multisample的出现让OpenGL能够支持纹理和Framebuffer的MSAA抗锯齿技术,代替了过去在光栅化状态(rasterizer state)中趋近没用的抗锯齿设置。

 

OpenGL 1.4

公布版本号:2002年7月24日

扩展

特性添加

GL_SGIS_generate_mipmap

 Automatic mipmap generation

GL_NV_blend_square

 Blend squaring

GL_ARB_depth_texture

GL_ARB_shadow

 Depth texture adn shadows

GL_EXT_fog_coord

 Fog coordinate

GL_EXT_multi_draw_arrays

 Multi draw arrays

GL_ARB_point_parameters

 Point parameters

GL_EXT_secondary_color

 Secondary color

GL_EXT_blend_func_separate

 Separate blend functions

GL_EXT_stencil_wrap

 Stencil warp

GL_ARB_texture_env_crossbar

 Texture crossbar env mode

GL_ARB_texture_mirrored_repeat

 Texture mirrored repeat

GL_ARB_window_pos

 Window raster position

这个版本号開始支持纹理自己主动生成Mipmap。 以及关于point光栅化的parameter。

 

OpenGL 1.5

公布时间:2003年7月29日

 

扩展

特性添加

GL_ARB_vertex_buffer_object

 Buffer object

GL_ARB_occlusion_query

 Occlusion query

GL_EXT_shadow_funcs

 Shadow functions

 这个版本号出现了缓冲对象(buffer object),彻底代替了过去的顶点数组(vertex array)和马上模式,顶点数据能够从客户端内存(client\'s memory)上传到服务端内存(server\'s memory)了;同一时候添加了很重要的遮挡查询(occlusion query)。

 

OpenGL 2.0

公布时间:2004年9月7日

 

扩展

特性添加

GL_ARB_shading_language_100

GL_ARB_shader_objects

GL_ARB_vertex_shader

GL_ARB_fragment_shader

 OpenGL Shading Language 1.00

GL_ARB_draw_buffers

 Multiple render targets

GL_ARB_texture_non_power_of_two

 Non-power-of-two textures

GL_ARB_point_sprite

 Point sprites

GL_EXT_blend_equation_separate

GL_EXT_stencil_two_side

 Separate stencil

 OpenGL最终有了自己的着色语言(shading language),ARB选择了3Dlabs的Dave设计的着色语言成为OpenGL原生的着色语言,同一时候OpenGL也開始有了顶点着色器(vertex shader)和片元着色器(fragment shader),导致这个阶段的OpenGL出现了固定管线和可编程管线并存的情况。OpenGL的片元着色器输出(fragment shader output)如今也能够输出到帧缓冲(framebuffer)的多个渲染目标(render target)上去了;同一时候OpenGL的纹理也不再有2^n大小的限制。

 

OpenGL 2.1

公布时间:2006年7月2日

 

扩展

特性添加

GL_ARB_pixel_buffer_object

 Pixel buffer objects

GL_EXT_texture_sRGB

 sRGB textures

这个版本号添加了像素缓冲对象(pxiel buffer object),用来更快地像素传输(pixel tansfer)的工作,支持将像素从纹理对象(texture object)和帧缓冲对象(framebuffer object)包装到(pack)像素缓冲对象(pixel buffer object),或者从像素缓冲对象解包装到纹理对象和帧缓冲对象。另外像素缓冲对象也能够像普通的缓冲对象(buffer object)一样被映射(map)更新数据。通过DMA的方式更加快地传输纹理。同一时候支持sRGB格式的纹理对象。

 

代号Longs Peak和OpenGL 3.0争议

 在OpenGL 3.0公布之前,这个版本号的代号叫做Longs Peak,包括了很多大量修改OpenGL的工作方式以及根本性改变API的调用方式等内容。2008年8月11日OpenGL 3.0公布。这个版本号的OpenGL開始分core profile和compatibility profile,而且Khronos Group希望仅仅支持core profile,这个革新性的规范引起一片哗然,很多厂商明白表示不会接受这个建议,并表示会继续支持很多被划入compatibility profile的扩展,迫于压力compatibility profile被改为是可选的。OpenGL 3.0的出现改变了过去OpenGL一定会向下兼容的特性,在一定程度上简化了API的臃肿以及添加了API的灵活度。

 

OpenGL 3.0

公布日期:2008年8月11日

扩展

特性添加

GL_EXT_gpu_shader4

 New functions for shading language

GL_EXT_framebuffer_object

 Framebuffer objects, along with blitting, multisample renderbuffer objects, and packed depth/stencil image formats

GL_EXT_framebuffer_blit

OpenGL的版本历史和发展

ARM各种版本号知识以及型号的发展(三星为例)

ECMAScript版本号总结

OpenGL 与 GLSL 版本号

OpenGL着色器版本编译错误

linux常用命令及文件管理系统

(c)2006-2024 SYSTEM All Rights Reserved IT常识