OpenGL

设计

OpenGL规范描述了绘制2D和3D图形的抽象API。尽管这些API可以完全通过软件实现，但它是为大部分或者全部使用硬件加速而设计的。
OpenGL的API定义了若干可被客户端程序调用的函数，以及一些具名整型常量（例如，常量GL_TEXTURE_2D对应的十进制整数为3553）。虽然这些函数的定义表面上类似于C编程语言，但它们是语言独立的。因此，OpenGL有许多语言绑定，值得一提的包括：JavaScript绑定的WebGL（基于OpenGL ES 2.0在Web浏览器中的进行3D渲染的API）；C绑定的WGL、GLX和CGL；iOS提供的C绑定；Android提供的Java和C绑定。
OpenGL不仅语言无关，而且平台无关。规范只字未提获得和管理OpenGL上下文相关的内容，而是将这些作为细节交给底层的窗口系统。出于同样的原因，OpenGL纯粹专注于渲染，而不提供输入、音频以及窗口相关的API。
OpenGL是一个不断进化的API。新版OpenGL规范会定期由Khronos Group发布，新版本通过扩展API来支持各种新功能。每个版本的细节由Khronos Group的成员一致决定，包括显卡厂商、操作系统设计人员以及类似Mozilla和谷歌的一般性技术公司。
除了核心API要求的功能之外，GPU供应商可以通过扩展的形式提供额外功能。扩展可能会引入新功能和新常量，并且可能放松或取消现有的OpenGL函数的限制。然后一个扩展就分成两部分发布：包含扩展函数原型的头文件和作为厂商的设备驱动。供应商使用扩展公开自定义的API而无需获得其他供应商或Khronos Group的支持，这大大增加了OpenGL的灵活性。OpenGL Registry负责所有扩展的收集和定义。
每个扩展都与一个简短的标识符关系，该标识符基于开发公司的名称。例如，英伟达（nVidia）的标识符是NV。如果多个供应商同意使用相同的API来实现相同的功能，那么就用EXT标志符。这种情况更进一步，Khronos Group的架构评审委员（Architecture Review Board，ARB）正式批准该扩展，那么这就被称为一个“标准扩展”，标识符使用ARB。第一个ARB扩展是GL_ARB_multitexture。
OpenGL每个新版本中引入的功能，特别是ARB和EXT类型的扩展，通常由数个被广泛实现的扩展功能组合而成。

历史

1980年代，开发可以用在各种各样图形硬件上的软件是个真正的挑战。通常，软件开发人员为每种硬件编写自定义的接口和驱动程序。但这非常昂贵并会导致大量工作的重复。
20世纪90年代初，SGI成为工作站3D图形领域的领导者。其IRIS GL的API被认为是最先进的科技并成为事实上的行业标准，而基于开放标准的PHIGS则相形见绌。IRIS GL更容易使用，而且还支持即时模式的渲染。相比之下，PHIGS难于使用并且功能老旧。
SGI的竞争对手（包括Sun、惠普和IBM）通过扩展PHIGS标准也能将3D硬件投入市场。这反过来导致SGI市场份额的削弱，因为有越来越多的3D图形硬件供应商进入市场。为攻占市场，SGI决定把IRIS GL API转变为一项开放标准，即OpenGL。
然而，SGI拥有大量的软件客户，对他们来说从IRIS GL迁移到OpenGL将需要巨额投资。此外，IRIS GL的应用程序接口拥有与3D图形不相关的函数。例如，它包括窗口、键盘和鼠标的API，部分原因是由于它是在X Window系统和Sun公司的NeWS系统之前开发的。而且，IRIS GL库由于授权和专利问题并不适合开放。上述种种因素要求SGI继续支持先进和专有的IRIS Inventor和IRIS Performer应用程序接口。
IRIS GL的限制之一是只能访问由底层硬件支持的功能。如果图形硬件不支持一项功能，那么该应用程序将不能使用它。OpenGL通过为硬件不具备的功能提供软件支持克服了此问题，这就允许应用程序在相对较弱的系统中使用先进的图形技术。OpenGL标准化了访问硬件的方式：硬件接口程序的开发（有时也称为设备驱动程序）交由硬件制造商，而窗口功能委托给底层操作系统。让大量不同种类的图形硬件讲同一种语言影响深远，它为软件开发者进行3D软件发展提供了更高层次的平台。
1992年，SGI公司领导了OpenGL架构审查委员会（OpenGL ARB）的创建。该委员会由若干公司组成，负责未来OpenGL规范的维护和扩展。
微软在1995年发布Direct3D，Direct 3D最终成为OpenGL的主要竞争对手。1997年12月17日，微软和SGI发起华氏温标项目，旨在统一OpenGL和Direct3D的接口。1998年，惠普加入。后来，由于SGI的财政限制、微软的战略以及缺乏行业普遍支持，项目1999年遭弃。
2006年7月，OpenGL架构评审委员会投票决定将OpenGL API标准的控制权交给Khronos Group。