什么是OpenGL

原创 2007年09月19日 16:47:00
OpenGL是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。
OpenGL就是支持这种转换的程序库,它源于SGI公司为其图形工作站开发的IRISGL,在跨平台移植过程中发展成为OpenGL。SGI在1992年7月发布1.0版,之后成为工业标准,由成立于1992年的独立财团OpenGLArchitectureReviewBoard(ARB)控制。SGI等ARB成员以投票方式产生标准,并制成规范文档(Specification)公布,各软硬件厂商据此开发自己的系统。1995年12月ARB批准了1.1版本,最新版规范是1999年5月通过的1.2.1。
OpenGL被设计成独立于硬件、独立于窗口系统,在各种操作系统的计算机上都可用的,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。
它低端应用上的主要竞争对手是微软公司的Direct3D,该图形库是以COM接口形式提供的,所以较为复杂。另外,微软公司拥有该库版权,目前只在Windows平台上可用。D3D的优势在速度上,但现在的一些低价显卡都能提供很好的OpenGL硬件加速,所以做3D使用Direct3D已没有特别的必要,在专业图形处理特别是高端应用方面,目前还没有出现以Direct3D技术为基础的例子,而游戏等低端应用也有转向OpenGL的趋势。微软在WinNT对OpenGL的支持始于3.51版,在Win9x中的支持始于Win95OEMServiceRelease2。
SGI曾经宣布研发OpenGL++,该图形库最大的特点是面向对象,提供了树形场景支持,大大减少了使用OpenGL处理复杂场景的工作量。后来SGI宣布与微软合作开发Ferihant,即Windows的下一代图形处理体系,包括DirectX与OpenGL的低级图形处理接口和以场景图支持为特点的高级接口。此举使大家都以为Windows图形处理快要过上幸福生活了,然而,不久,SGI宣布中止合作,并撤回派出的科学家,Ferihant基本上夭折。SGI称终止合作的原因是微软不肯积极合作,只想把SGI的技术合并进DirectX。
虽然早在WinNT3.51时代微软就已经实现了它的OpenGL版本,但却不肯在Win95上提供相应的支持。微软称该API适合高端应用,而Win95面向一般消费者,所以用处不大。并且在其Win3.x下开发的Wing图表库的基础上搞出了GameSDK,即后来的DirectX库,称这套库是专门为高性能游戏开发设计的。此举在当时的硬件条件下,无疑是非常有道理的,并且很快成为Windows环境下游戏开发的标准API。该库实质上是提供了绕过Windows直接访问显存的途径,从而很好地解决了GDI体系性能方面的不足,但由于是以COM接口形式提供的,所以相当复杂,而稳定性也不是很好。然而也就在这个时期,三维图形加速卡开始走向商用和家用。
之后,随着大批游戏开发人员开始多方呼吁微软积极支持OpenGL,使得微软终于在Win95的OSR2版本里集成了OpenGL,并为以前版本的Win95免费提供单独的OpenGL实现。 

相关文章推荐

北理工虚拟现实作业-OpenGL下实现3D Max模型的导入

两个礼拜之前,李凤霞老师又布置了一次虚拟现实作业,这次的作业题目是自己从网上找一个汽车的3D模型(一般都是3D Max建的),然后把这个模型导入到OpenGL中,在工程中显示出来,同时能通过鼠标的移动...

【一步步学OpenGL 10】 -《索引绘制》

教程10索引绘制背景OpenGL提供了几个绘制函数,其中我们之前使用的glDrawArrays()属于顺序绘制的一个函数。顺序绘制是从指定的偏移量依次扫描顶点缓冲区所有图元的每一个顶点,这样很简单易用...
  • cordova
  • cordova
  • 2016年09月17日 19:52
  • 2420

Direct3D和openGL故事【转】

自1996年开始,3D API之战延续至今,并随着GPU程序的广泛应用而炮火渐希,淡出争论的焦点。如果非要论个输赢的话,应该是OpenGL绊倒了自己,以致大业未成。而OpenGL ES异军突起,反而要...
  • wag2765
  • wag2765
  • 2016年01月25日 16:25
  • 803

CUDA+OpenGL混合编程

CUDA+OpenGL混合编程示例: #include #include #include "GL\glew.h" #include "GL\glut.h" #include ...
  • dcrmg
  • dcrmg
  • 2017年02月07日 22:49
  • 900

OpenGL -- 光照实例 1

设置太阳光(平行光) 在设置不同材质的球体,观察光照效果直接上图代码#include #include #include #include #include #include #...

OpenGL应用开发----向量

一、向量简介向量是一种具有大小和方向的数学列表、向量的大小代表了向量本身的长度,而向量的方向描述了指向的方位。 通常向量使用一个带有箭头的线段来表示一个向量,线段的长度则是向量的大小,箭头则表示向量的...

OpenGL实现鼠标绕任意轴旋转/平移/缩放

刚刚学opengl的童鞋肯定有个苦恼的麻烦,只会绘制一个三角形,但是想像那些三维软件那样用鼠标控制视角还是有点困难的,所以我就封装了一个场景漫游类:RoamingScenceManager,这个类使用...

基于OpenGL的烟花粒子系统

基于OpenGL的烟花粒子系统 标签: colorsfloat数据结构structblend图形 2007-07-25 23:03 7027人阅读 评论(66) 收藏 举报  分...

[OpenGL]从零开始写一个Android平台下的全景视频播放器——5.5 响应用户的多指触控事件(缩放)

Github项目地址为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本)回到目录先贴代码再讲原理吧缩放事件(Scale)监听和Scroll一样,Scale也有...

Computer Graphics Project3(OpenGL实现机器人走动及层级结构)

Computer Graphics Project3
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是OpenGL
举报原因:
原因补充:

(最多只允许输入30个字)