您当前位置: 首页-资讯 > -正文

快看点丨魔兽opengl是什么意思_OpenGL是什么

来源: 互联网2023-05-16 18:56:14

1、OpenGL(英文:Open Graphics Library)是一个用于渲染2D和3D矢量图形的跨语言和跨平台的应用编程接口(API)。

2、这个接口由近350个不同的函数调用组成,用于从简单的图形位绘制到复杂的三维场景。另一个程序接口系统是Direct3D,只在微软Windows上使用。


【资料图】

3、OpenGL通常用于CAD、虚拟现实、科学可视化程序和视频游戏开发。

4、OpenGL的高效实现(使用图形加速硬件)存在于Windows、部分UNIX平台和Mac OS中。这些实现通常由显示设备制造商提供,并且严重依赖制造商提供的硬件。

5、开源库Mesa是一个纯粹基于软件的图形API,其代码兼容OpenGL。然而,由于许可证的原因,它只声称是一个“非常相似”的API。

6、The voting members of ARBITRAGEUR in June 2002 include 3Dlabs, Apple Computer, ATI Technology, Dell Computer, Evans Sutherland, Hewlett-Packard, IBM, Intel, Matrox, NVIDIA, SGI and Sun Microsystems.

一、简介

7、OpenGL(英文:Open Graphics Library)是一个用于渲染2D和3D矢量图形的跨语言和跨平台的应用编程接口(API)。

8、这个接口由近350个不同的函数调用组成,用于从简单的图形位绘制复杂的三维场景。另一个程序接口系统是Direct3D,只在微软Windows上使用。

9、OpenGL通常用于CAD、虚拟现实、科学可视化程序和视频游戏开发。

10、OpenGL的高效实现(使用图形加速硬件)存在于Windows、部分UNIX平台和Mac OS中。这些实现通常由显示设备制造商提供,并且严重依赖制造商提供的硬件。

11、开源库Mesa是一个纯粹基于软件的图形API,其代码兼容OpenGL。然而,由于许可证的原因,它只声称是一个“非常相似”的API。

12、The voting members of ARBITRAGEUR in June 2002 include 3Dlabs, Apple Computer, ATI Technology, Dell Computer, Evans Sutherland, Hewlett-Packard, IBM, Intel, Matrox, NVIDIA, SGI and Sun Microsystems.

二、设计

13、图形管道

14、OpenGL规范描述了用于绘制2D和3D图形的抽象API。虽然这些API可以完全在软件中实现,但它们是为大多数或所有硬件加速而设计的。

15、值得一提的是:JavaScript (API)绑定的WebGL用于基于OpenGL ES 2.0的Web浏览器中的3D渲染);c类:WGL、GLX和CGL;c . iOS提供的绑定;Android提供的Java和c绑定。

16、OpenGL不仅是语言独立的,而且是平台独立的。该规范没有说明如何获取和管理与OpenGL上下文相关的内容,而是将这些内容作为细节提供给底层窗口系统。出于同样的原因,OpenGL纯粹专注于渲染。

17、而不提供输入、音频和窗口相关的API。

18、OpenGL是一个不断发展的API。Khronos集团将定期发布新版本的OpenGL规范,新版本通过扩展API支持各种新功能。

19、每个版本的细节都是由Khronos集团的成员决定的,包括显卡制造商、操作系统设计师以及像Mozilla和Google这样的通用技术公司。

20、除了核心API所需的功能,GPU厂商还可以以扩展的形式提供额外的功能。扩展可能引入新的函数和新的常数,并可能放松或取消现有OpenGL函数的限制。

21、然后扩展分两部分发布:包含扩展函数原型的头文件和作为制造商的设备驱动程序。供应商使用扩展来公开定制的API,而无需其他供应商或Khronos Group的支持。

22、这大大增加了OpenGL的灵活性。OpenGL注册表负责所有扩展的收集和定义。

23、每个扩展都与一个短标识符相关联,该标识符基于开发公司的名称。比如英伟达的标识符就是NV。如果多个供应商同意使用相同的API来实现相同的功能,那么使用EXT标识符。

24、这种情况更进一步。Khronos集团的架构审查委员会(ARB)正式批准了该扩展,因此它被称为“标准扩展”,标识符为ARB。

25、The first abbreviation extension of ARBITRAGEUR is GL _ ARB _ multi-texture.

26、OpenGL每个新版本中引入的函数,尤其是ARB和EXT类型的扩展,通常是由几个广泛实现的扩展函数组成的。

三、文档

27、OpenGL的流行部分是由于其高质量的官方文档。OpenGL架构审查委员会发布了一系列手册,包括API的变化和更新以及规范。这些手册因其封面颜色而闻名。

28、红色封面的书

29、Dave Shreiner, Graham Sellers, John M. Kessenich and Bill M. Licea-Kane. 2013.OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3(8th Edition). Addison-Wesley Professional.ISBN 978-0321773036.

30、橙宝书

31、Randi J. Rost, Bill M. Licea-Kane, Dan Ginsburg, John M. Kessenich, Barthold Lichtenbelt, Hugh Malan and Mike Weiblen. 2009.OpenGL Shading Language (3rd Edition). Addison-Wesley Professional.ISBN 978-0321637635

四、相关程序库

32、早期的OpenGL 版本会一同发布配套的GLU 库,提供一些同时代硬件尚不支持的简单功能。GLU 最后一次更新规格要求是在1998 年,对已弃用的OpenGL 特性有依赖。

33、还有几个库也创建在OpenGL 之上,提供了OpenGL 本身没有的功能:

34、GLFW

35、GLUT

36、GLEW、GLEE

37、特别是,OpenGL Performer 库——由SGI 开发并可以在IRIX、Linux 和Microsoft Windows 的一些版本上使用,构建于OpenGL,

38、可以创建实时可视化仿真程序。

39、当开发者需要使用最新的OpenGL 扩展时,他们往往需要使用GLEW 库或者是GLEE 库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。

40、这类库利用动态加载技术(dlsym、GetProcAddress 等函数)搜索各种扩展的信息。

五、历史

41、1980 年代,开发可以用在各种各样图形硬件上的软件是个真正的挑战。通常,软件开发人员为每种硬件编写自定义的接口和驱动程序。但这非常昂贵并会导致大量工作的重复。

42、20 世纪90 年代初,SGI 成为工作站3D 图形领域的领导者。其IRISGL 的API 被认为是最先进的科技并成为事实上的行业标准,而基于开放标准的PHIGS 则相形见绌。

43、IRIS GL 更容易使用,而且还支持即时模式的渲染。相比之下,PHIGS 难于使用并且功能老旧。

44、SGI 的竞争对手(包括Sun、惠普和IBM)通过扩展PHIGS 标准也能将3D 硬件投入市场。这反过来导致SGI 市场份额的削弱,因为有越来越多的3D 图形硬件供应商进入市场。

45、为攻占市场,SGI 决定把IRIS GL API 转变为一项开放标准,即OpenGL。

46、然而,SGI 拥有大量的软件客户,对他们来说从IRIS GL 迁移到OpenGL 将需要巨额投资。此外,IRIS GL 的应用程序接口拥有与3D 图形不相关的函数。例如,

47、它包括窗口、键盘和鼠标的API,部分原因是由于它是在X Window 系统和Sun 公司的NeWS 系统之前开发的。而且,IRIS GL 库由于授权和专利问题并不适合开放。

48、上述种种因素要求SGI 继续支持先进和专有的IRIS Inventor 和IRIS Performer 应用程序接口。

49、IRIS GL 的限制之一是只能访问由底层硬件支持的功能。如果图形硬件不支持一项功能,那么该应用程序将不能使用它。OpenGL 通过为硬件不具备的功能提供软件支持克服了此问题,

50、这就允许应用程序在相对较弱的系统中使用先进的图形技术。OpenGL 标准化了访问硬件的方式:硬件接口程序的开发(有时也称为设备驱动程序)交由硬件制造商,而窗口功能委托给底层操作系统。

51、让大量不同种类的图形硬件讲同一种语言影响深远,它为软件开发者进行3D 软件发展提供了更高层次的平台。

52、1992 年,SGI 公司领导了OpenGL 架构审查委员会(OpenGL ARB)的创建。该委员会由若干公司组成,负责未来OpenGL 规范的维护和扩展。

53、微软在1995 年发布Direct3D,Direct 3D 最终成为OpenGL 的主要竞争对手。1997 年12 月17 日,微软和SGI 发起华氏温标项目,

54、旨在统一OpenGL 和Direct3D 的接口。1998 年,惠普加入。后来,由于SGI 的财政限制、微软的战略以及缺乏行业普遍支持,项目1999 年遭弃。

55、2006 年7 月,OpenGL 架构评审委员会投票决定将OpenGL API 标准的控制权交给Khronos Group。

六、绑定

56、为了加强它的多语言和多平台特性,已经用很多语言开发了OpenGL 的各种绑定和移植。最值得注意的是,Java3D 库已经可以利用OpenGL(另一个选择可能是DirectX)作为它的硬件加速了。

57、OpenGL 官方网页列出了用于Java、Fortran 90、Perl、Pike、Python、Ada 和Visual Basic 的多个绑定。

七、高级功能

58、OpenGL 被设计为只有输出的,所以它只提供渲染功能。核心API 没有窗口系统、音频、打印、键盘/鼠标或其他输入设备的概念。虽然这一开始看起来像是一种限制,

59、但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些集成于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API 实现:

60、GLX- X11(包括透明的网上)

61、WGL-MicrosoftWindows

62、另外,GLUT 库能够以可移植的方式提供基本的窗口功能。

八、版本

63、OpenGL 进化自(而且风格很相似)SGI 的早期3D 接口IRIS GL。IRIS GL 的一个限制是它只能访问底层硬件提供的特性。如果图形硬件不支持例如纹理映射这样的功能,

64、那么应用程序就不能使用它。OpenGL 通过在软件上对硬件不支持的特性提供支持的方法克服了这个问题,允许应用程序在相对低配置的系统上使用高级的图形特性。

65、Fahrenheit 项目是Microsoft 和SGI 之间的联合行动,为了统一OpenGL 和Direct3D 接口的目的。

66、它一开始提出了一些把规则带给交互3D 计算机图形API 世界的承诺,但因为SGI 的财政限制,这个项目后来被放弃了。

67、2002 年微软的DirectX 9 提出了全新的Shader 绘图功能以及高端着色语言(HLSL),OpenGL 霸主地位开始被瓦解。

68、这使得3DLabs 了解到必须开发全新的OpenGL 2.0 版本,但仅加入支持GLSL 的功能。2006 年Khronos 接手OpenGL,

69、立刻着手发展Longs Peak 与Mount Evans。2008 年推出OpenGL 3,但评价普遍不高。

70、2010 年3 月10 日, OpenGL 同时推出了3.3 和4.0 版本,同年7 月26 日又发布了4.1 版本。2011 年8 月8 日发布4.2 版本。

71、2013 年发布4.3 版。

本文魔兽opengl是什么意思,OpenGL是什么到此分享完毕,希望对大家有所帮助。

标签: