工程设计费用计算:什么是openGL,D3D?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 14:30:01
是软件?是程序?还是显卡之类的硬件?

顺便问一下,3D加速卡是不是硬件?

3D加速卡就是硬件,也就是我们常说的显卡。

而操作系统和应用软件通常不能直接去使用显卡和其中的3D加速功能,必须通过系统中的一个接口去调用,这就是OPENGL和D3D的作用了。

OPENGL和D3D对下可以通过显卡驱动程序操作显卡,对上可以为操作系统和各种应用程序提供各种显示用的接口函数和显示功能。

操作系统和应用软件(包括游戏)不需要知道这台电脑用的什么显卡,只需要调用OPENGL或D3D提供的接口函数和功能就能实现显示功能,通过这种分工合作,极大的降低了软件开发周期和成本。比如需要在显示器上画出一个三维的正方体,不需要程序人员针对不同的显卡去写大段的代码,只需要调用OPENGL或D3D的一个函数并把一些相关的参数发给他们,由他们去完成这个事情就可以了。

OPENGL和D3D本质虽然一样,但却是不同的两个标准。

OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAM软件ProEngineer、GIS软ARC/INFO等等。

Direct3D (D3D):是微软为提高3D 游戏在Win 95/98中的显示性能而开发的显示程序,目前已经升级到9.0版本,而且支持XP等微软最新的操作系统,它提供了丰富的3D功能库,是游戏广泛采用的标准。

Direct3D (D3D):

这是微软为提高3D 游戏在Win 95/98中的显示性能而开发的显示程序。这个基于显示光栅加速引擎非常强大和复杂,它在显示满屏状态,提供多边形计算、贴图场景等优化能力。由于其只能在满屏提供优化能力,所以在3DS MAX中你只能在最大化显示视角时(如最大化显示TOP、RIGHT、LEFT和PERSPECTIVE视角),才能获得加速能力。同时,Direct3D不支持windows NT系统。3DS MAX只支持5.0以上的DirectX,Direct 3D只支持光栅级函数调用,Direct 3D常得到廉价的显示卡支持,支持场景数据优化、加速贴图显示(需得到显示卡的支持),场景透视修正。Direct 3D工作在高位显示模式,在这些显示模式下,它可达到一个显示质量和内存占用的平衡点。缺点是,只能工作在Win95/98下,不能工作在Windows NT下,只支持高位颜色显示模式,两个显示通道显示相对较慢,由于Direct 3D分配显示内存的方式问题,在极大化/极小化窗口时会出现显示混乱问题。由于Direct 3D对3DS MAX支持不足,显示速度虽然快于HEIDI,但在3DS MAX并不适用。

OpenGL:

OpenGL是SGI公司开发应用于不同操作系统的三维应用软件,支持Windows95/98、WindowsNT等系统。3DS MAX使用完整的OpenGL内部函数,包括几何转化、灯光、贴图、数据剪切、场景重绘。如果显示卡支持这些函数,3DS MAX可完全使用,OpenGL是多线程程序,可支持双处理器系统。3DS MAX中的所有三维物体都基于OpenGL函数,通过这些函数进行几何和光栅转换。但现在出现了有趣的现象:不是所有支持OpenGL加速的显卡都支持OpenGL内部函数。这意味着在进行三维物体转换时,不能确定CPU是否同时参与进行转换计算。现在部分这种显卡只支持部分OpenGL函数,其它只能依靠CPU进行计算,加重了CPU的计算负担。为何这些显卡只支持部分OpenGL函数?其中一个原因是:电脑游戏只需要这部分OpenGL函数;而另一个原因是,分离几何转换和光栅转换有利于使显示速度提高,把复杂的几何转换交给CPU计算大大快于显示芯片计算。最后你需懂得MCD(简化版OpenGL)和ICD(完全版OpenGL)的区别:前者是在3Dfx Voodoo 系列显卡中使用,为Quake 或 Unreal等游戏的显示引擎;后者是在ATI RAGE TNT/TNT2、permeida 2/3等系列显卡中使用,通常在这些显卡说明书中标称为OpenGL ICD。3DS MAX硬件加速要求:完整的硬件光栅加速,OpenGL ICD,优良的几何硬件加速引擎。但它也非完美,由于三维场景数据都必须通过此驱动程序驱动,可能造成数据传输总线瓶颈现象。由于OpenGL广泛使用于不同操作系统,虽然这是它的优点,但也是其缺点,为了保证各个系统显示的共同性,可能造成场景显示的错误,如:灯光和贴图的显示限制,你可能注意到3DSMAX场景使用显示中贴图和灯光的紊乱现象(在灯光不强和无贴图校正时,尤其明显)。OpenGL支持16位以上真彩色显示,不支持8位彩色显示。OpenGL只能支持场景中最多8盏灯光的显示效果。线框物体不支持背面选择,所以不支持变边多边形。场景中物体表面纹理层叠自动关闭自发光效应,非层叠纹理将显得非常明亮,这有助于提高显示速度。由于在OpenGL设计时未对场景重绘进行优化,3DS MAX场景重绘时比使用HEIDI驱动慢,通常在场景中移动物体会出现显示下降的现象。

虽然OpenGL在显示时同样存在问题,但其已成为三维图形软件的标准,在显示速度上也有一定优势,在使用3DS MAX时通常使用此种显示方式(专业显卡除外)。