OpenGL系统设计-1.1什么是OpenGL

1         OpenGL基础

1.1        什么是OpenGL

OpenGL全称为Open Graphics Language,意思是开放的图形程序接口,是一种用于3D渲染和3D加入的跨平台标准,换句话说OpenGL是一种3D API,是3D加速卡硬件和3D图形应用程序之间一座重要的沟通桥梁,其主要的目标是通过其提供的各种功能调用实现真实感的三维世界。在这个三维世界中,物体都是由点、线、面组成的集合。OpenGL通过固定的步骤将这些表征物体的数据经过转换最终显示在计算机的屏幕上。

OpenGL支持的平台包括WindowsMaxOSLinuxUnix。为了做到OpenGL宣称的开放,SGIDECIBMIntel、微软牵头成立了OpenGL组织,该组织称为OpenGL架构评审委员会(OpenGL Architecture Review Board - ARB),目前该组织包括SGIIBMIntelHPAppleDellSunATI3DlabsNvidiaMatroxEvans&Sutherland12个表决成员和Discreetid SoftwareNECQuantum 3DUniversity of Central FloridaIntelligraphicsMicronS3/Diamond MultimediaRaven SoftwareSiS20多个参与成员。OpenGL ARB3个月召开一次会议,讨论组织需要处理的问题,OpenGL的发展等。

OpenGL的前身是SGI公司为其图形工作站开发的IRISGL19927月,SGI公司发布了OpenGL1.0版本。随后又与微软公司共同开发了WindowsNTWindows9x版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件,如Softimage3D等现在通过它也可以在普通的个人PC上使用。新的Windows操作系统Windows2000/2003WindowsXP等均支持OpenGL。这样使得一些优秀的3D图形设计软件如AutoCAD3DSMAXMAYATruSpaceLightWave 3D等均可以使用支持OpenGL3D加速卡,极大提高了3D图形的处理速度。

OpenGL也是在不断发展的,在20037月的SIGGRAPH2003上,OpenGL ARB发布了最新的OpenGL 1.5版本规范,该规范引入了一种新的着色语言OGLSLOpenGL Shading Language)。OGLSL的开发目的,是使在多数平台上使用的大多数厂家的图形卡能够使用相同的高级着色语言。它将使开发商们能够制作出由高度并行的新一代图形硬件加速的种类繁多的图形、图像和计算应用程序。它将称为即将发布的OpenGL2.0的基础。

关于OpenGL 1.5的应用,OpenGL ARB在联合声明中是这样阐述的:可以实时地以电影画质渲染出轰动今夏的任何一部巨片中的计算机图形场景,而不用花上几个月去制作。汽车设计师可以设计出与照片别无二致的汽车造型;而喷气式战斗机的训练模拟则不但好看,而且精确到无法辨认出模拟场景与实物的区别。

虽然在常规的计算机系统中应用没有任何问题,但是在嵌入式系统中,受限于系统资源,OpenGL的应用就成了问题。为了解决这一问题,以开发API为宗旨的业内团体Khronos GroupOpenGL ARB发布OpenGL1.5的同一天发布嵌入系统用的2/3维图形规格OpenGL ESOpenGL Embedded System 1.0。另外Khronos Group还制订了EGL 1.0规范,EGL 1.0中制定了在多种操作系统中安装OpenGL ES的标准方法。作为OpenGL的子集,OpenGL ES 1.0只需要50K的容量,大大减轻了系统的负担。

早期的OpenGL纯粹是一个3D API,这使得它在和微软的DirectX竞争时面临一个问题,即怎样把音频、视频处理和OpenGL结合起来。OpenGL程序员需要自己来考虑处理这些问题,尽管这些问题并不难。但是OpenGL ARB仍然考虑到了这个问题,在2001年发布了OpenML 1.0OpenGL Media Libraby)。作为OpenGL的扩展,OpenML负责处理有关音频、视频、回放等。OpenML的软件环境让多重格式的数字内容包括视讯、声音及3D绘图同时整合的工作变得较为容易。OpenML令人值得注意的一点是,使新产品的显示、影像和声卡更为丰富,就如同电视机顶盒在手提装置上的应用。因此,比较而言,MEPG-4是提供视频数据流的组件,而OpenML则是将视频与丰富的3D显示和音效结合在一起的粘合剂。OpenML也是跨平台的。

不过,直到SIGGRAPH2003Khronos Group才发布了OpenML 1.0 SDKalpha版本,该版本支持WindowsLinux,当然还有SGIIRIXOpenGL SDK 1.0的正式版本要到2004年中才会发布。

除了在常规计算机系统和嵌入式系统,OpenGL还可以应用到移动手持设备中,如PDA、手机等。为了将OpenGL发展称为移动设备的图形规格标准,SGISun20037月就双方的图形处理技术达成合作,携手开发OpenGL应用程序接口(API)的配套Java软件。帮助手机用户下载下载游戏、音乐和图形应用程序等。两家公司将合作开发API捆绑软件,然后将新产品提交给Java Community ProcessOpenGL ARB。将OpenGLJava的能力结合起来,在一个通用平台应用环境中将高性能图形连接到网络环境中,用户可以享受到各种各样的媒体、图形或商业演出。新产品还可以帮助程序开发人员开发出从手机到超级计算机均适用的软件,游戏开发人员开发的游戏不但可能在手机上玩,还可以在台式电脑中玩。Sun还与Khronos Group合作实现OpenGL ESJ2ME图形APE的支持。

OpenGL程序员高兴的是,上面说的OpenML OpenML SDKOpenEL都可以到KhronosGroup的官方网站免费下载使用。

Windows98Windows NT/2000中,使用的是OpenGL 1.1规范,这可以满足多数应用,但是包括新的OpenGL 1.21.5的支持就只能通过显卡厂商的驱动程序来支持了。如果想得到OpenGL新特性,就需要升级自己的显卡驱动程序。当然,越新的显卡缺省支持的OpenGL版本也越高。

提到OpenGL,就不能不提微软,微软公司在软件行业的实力实在在强大了。作为OpenGL ARB的创始成员,微软对OpenGL的态度是暧昧的。虽然在压力下微软选择了在Windows中支持OpenGL,但是这种支持是不彻底的。当然,这也和微软的目标有关。因为微软也想控制这一领域,正如它在其他领域作的那样,它不可能全力支持一个和自己产品有竞争的标准。虽然,WindowsGDIWinG都不能成为3D哪怕是2D图形API的标准,但是微软仍然有能力开发出一个DirectX来和OpenGL抗衡。

为了专注于自己的DirectX,微软于20032月宣布退出OpenGL ARB。虽然微软宣传它仍然会继续支持OpenGL,但是可以预料,两个标准之间在未来会处于持续竞争的状态。

此后,OpenGL1.0发展到3.0DirectX也发展到最新的11.0,双方可说是各擅胜场。不过当OpenGL ES横空出世后,基本已经成为移动终端的3D标准。在移动通信发展如此迅猛的阶段,可以说OpenGL算是领先了半步。

-------------------------------------------------------------------------------------------------
声明:本文可在网络媒体自由传播,但必须保留作者的声明信息及来源,平面媒体的引用必须征得作者的同意。
另外,作者也欢迎同仁进行交流。
QQ: 851473402
Email: [email protected]

你可能感兴趣的:(windows,api,IBM,微软,图形,跨平台)