随着计算机图形学的发展,出现了各种三维图形工具软件包,如PHIGS、PEX、RenderMan等。但没有一种三维工具软件包在交互式三维图形建模能力、外部设备管理以及编程方便程度上能够与OpenGL相比拟。OpenGL,Open Graphics Libaray,是一个3D图形和模型库。它被定义为“一个图形硬件的软件接口”。OpenGL,在真实感图形制作上的优秀性能使之成为诸大公司的图形标准,所以OpenGL又是新一代的三维图形工业标准。OpenGL不仅是一个图形库,它更是一个应用程序接口——API。
将OpenGL称之为SGI(视算科技)的OpenGL毫不为过。OpenGL最初是SCI公司为其图形工作站开发的、独立于窗口操作系统和硬件环境的图形开发环境,其目的是将用户从具体的硬件中解放出来,完全不用理解这些系统的结构和指令系统,只要按照规定的格式书写应用程序就可以在任何支持该语言的硬件平台上执行。它源于IRIS GL,在跨平台移植过程中发展成为OpenGL。
SGI在1992年7月发布1.0版,后成为工业标准,由成立于1992年的OpenGL Architecture Review Board (ARB) ARB体系评审委员会控制。SGI等ARB成员以投票方式产生标准,并制成规范文档(Specification)公布,各软硬件厂商据此开发自己系统上的实现。只有通过了ARB规范全部测试的实现才能称为OpenGL,现在的ARB投票成员包括SGI、Intel、IBM、nVIDIA、ATi、Microsoft、Apple等公司。2001年8月ARB批准了1.1版本,随后推出了1.2,2002年7月24日通过的1.4版本,最新版本规范是2003年7月退出的1.5。最近,3Dlabs提出了OpenGL 2.0新的版本,在OpenGL2.0中注入新性能,突破OpenGL1.X版本难以跟上硬件发展水平的缺陷,希望在技术上超过DirectX D3D,成为图象图形世界的领先者。OpenGL2.0的目标,就在于启动并开发硬件的可编程能力。
OpenGL的最大特点是与硬件的无关性,独立于硬件和窗口系统。1)使用它,图形软件生产厂商再不用为各种不同的机型开发设计不同的软件,只要操作系统使用了OpenGL适配器就可以达到相同的效果。2)它可以运行在当前各种流行的操作系统上,如MacOS、Unix、Windows95/98/NT/2000、Linux、OPENStep、Python、BeOS等,并且很容易从一个平台移植到另一个平台上。许多计算机公司已经把OpenGL集成到各种窗口和操作系统中,其中操作系统包括UNIX、Windows NT、DOS等,窗口系统有X窗口、Windows等;
3)各种流行的编程语言都可以调用OpenGl的库函数,如:C、C++、Fortran、Ada、 Java。许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,例如著名的GIS软件ARC/INFO。4)OpenGL完全独立于各种网络协议和网络拓扑结构。OpenGL能在网络环境下以客户机/服务器模式工作,充分发挥集群运算的威力,是专业图形处理、科学计算等高端应用领域的标准图形库。
作为图形硬件的软件接口,OpenGL由几百个指令或函数组成。这些函数使得编程人员能够指定对象并对其操作,从而生成高质量色彩丰富的三维物体。它包括了120个图形函数,开发者可以用这些函数来建立三维模型和进行三维实时交互。与其它图形程序设计接口不同,OpenGL提供了十分清晰明了的图形函数,因此初学的程序设计员也能利用OpenGL的图形处理能力和1670万种色彩的调色板很快地设计出三维图形以及三维交互软件。
OpenGL是一套底层三维图形API,之所以称之为底层API,是因为它没有提供几何实体图元,不能直接用以描述场景。OpenGL不要求开发者把三维物体模型的数据写成固定的数据格式,这样开发者不但可以直接使用自己的数据,而且可以利用其它不同格式的数据源。通过一些转换程序,可以很方便的将AutoCAD、3DS等图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数据。这种灵活性极大地节省了开发者的时间,提高了软件开发效益。
使用OpenGL的典型描绘是:首先在帧缓冲区中定义一个窗口,然后在此窗口中进行各种操作。在所有指令中,有些调用简单的几何对象,另外一些调用将影响到这些几何对象的描绘,包括如何光照、着色、以及如何从用户的二维或三维模型空间映射到屏幕。