OpenGL和DirectX的由来

当年ID soft的卡马克他们,发明了游戏引擎这个概念之后,人们开始用引擎来开发大量的游戏,当游戏的画面拟真度越来越高时,仅仅靠CPU来进行图形图像处理已经不能满足游戏的需要了。于是,人们开始尝试用硬件加速卡来协助CPU进行3D图像处理,此举在技术上和商业上都大获成功。早期比较出名的比如Voodoo等。于是,大量的加速卡及GPU(Graphic Processing Unit)设计公司开始迅速推出自己的设计,如ATI(被AMD收购),NVidia,PowerVR(市场萎缩,转向嵌入式系统的3D加速单元,参考PowerVRMBX及OpenGL ES)等开始展露头角。

问题随之出现:每家公司可能都有自己的设计方案,那么游戏和3D应用程序开发者所设计开发出来的软件就很难在不同的厂商之间的加速卡上运行,很难很好的使用这些加速卡的加速功能。也就是说,这类应用程序的移植性将会降低。

要解决移植性的问题,可以通过将加速卡功能抽象出来,统一定义接口的形式来实现。于是,人们采用了典型的分层模式(参阅:设计模式),将一套应用程序分为3个层次:

应用程序层-> 硬件抽象层-> 硬件层

其中,应用层就是游戏和应用软件开发人员的开发主体,他们调用统一的加速卡API来进行上层开发,而不用考虑移植性问题;

硬件抽象层则抽象出硬件的加速功能,进行有利于应用层开发的封装,并向应用层开放API;

硬件层将硬件驱动提供给抽象层,以实现抽象层加速功能的有效性。

这个结构有效的将游戏和应用程序与硬件加速卡隔离开,这就很好的提升了程序的移植能力。并且,还有一个好处就是,开发人员的知识复用率得到提高,从而降低了这类软件的开发门槛。于是,众多的加速卡厂家就联合起来,形成一个组织,共同制定出了这个硬件抽象层的接口标准,这就是OpenGL。而出于同样的目的,微软也定义了一套平行的类似于OpenGL的接口集合,就叫做Direct 3D。

OpenGL和DirectX的区别

OpenGL 只是图形函数库。 DirectX包含图形, 声音, 输入, 网络等模块。 OpenGL稳定,可跨平台使用。 DirectX仅能用于Windows系列平台,包括Windows Mobile/CE系列以及XBOX/XBOX360。

Direct3D简介

Direct3D(简称:D3D)是微软公司在Microsoft Windows操作系统上所开发的一套3D绘图编程接口,是DirectX的一部份,目前广为各家显示卡所支援。与OpenGL同为电脑绘图软体和电脑游戏最常使用的两套绘图编程接口之一。Direct3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API。它是由微软Direct3D 界面(Microsoft)一手树立的3D API规范,微软公司拥有该库版权,它所有的语法定义包含在微软提供的程序开发组件的帮助文件、源代码中。Direct3D是微软公司DirectX SDK集成开发包中的重要部分,适合多媒体、娱乐、即时3D动画等广泛和实用的3D图形计算。

自1996年发布以来,Direct3D以其良好的硬件兼容性和友好的编程方式很快得到了广泛的认可,现在几乎所有的具有3D图形加速的主流显示卡都对Direct3D提供良好的支持。但它也有缺陷,由于是以COM接口形式提供的,所以较为复杂,稳定性差,另外,目前只在Windows平台上可用。

DirectX简介

DirectX是一种应用程序接口,它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。这样说是不是有点不太明白,其实从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。

OpenGL

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS L的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。

WebGL

2010-6-25日在斯坦福大学WebGL第一阵营成立,所有的讲座和视频都是免费的。2010年12月14日斯里兰卡WebGL第二阵营成立,所有的讲座和视频都是免费的。2011年6月10日加利福尼亚州即将成立WebGL第三阵营。

WebGL解决了现有Web交互式三维动画问题

第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

COLLADA是面向交互式3D 应用程序的基于XML 的数字资产交换方案,使3D 创作应用程序可以自由地交换数字资产而不损失信息-使多种DCC和3D处理软件包可以组合成强大的工具链管道。独特的交互模式提供了广泛全面的视觉编译。COLLADA FX支持使用OpenGL ES 着色语言创作和封装着色器,以使一流的3D 创作工具可以有效协作创建OpenGL / penGL ES 应用程序和资产。COLLADA是一个开放的标准,最初用于3D软件数据交换,由SCEA发起,现在则被许多著名厂家支持如Autodesk、XSI等。COLLADA不仅仅可以用于建模工具之间交换数据之用,也可以作为场景描述语言用于小规模的实时渲染。因为COLLADA OM拥有丰富的内容用于表现场景中的各种元素,从多边形几何体到摄像机无所不包。我们可以通过COLLADA DOM库来进行场景文件的读取与处理操作。python