用户登录
用户注册

分享至

d3d 与 opengl

  • 作者: OBM的那个啥
  • 来源: 51数据库
  • 2020-09-23
OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口。但最近几年它成为一个非常优秀的开放式三维图形接口。实际上它是图形软件和硬件的接口,它包括有120多个图形函数,"GL"是"GRAPHIC LIBRARY"的缩写,意思是“图形库”。OpenGL的出现使大多数的程序员能够在PC机上用C语言开发复杂的三维图形。微软在Visual C++ 5中已提供了三个OpenGL的函数库(glu32.lib, glau.lib,OpenGL32.lib),可以使我们方便地编程,简单、快速地生成美观、漂亮的图形。例如,Windows NT中的屏幕保护程序中的花篮和迷宫等都给人们留下了深刻的印象

Direct3D是一种基于OLE COM的应用程序接口,它设计用于实现设备独立传输,高度优化,基于软件实现的实时3D再现,并使得3D硬件能够快速透明地存取。对于那些要求更多控制3D目标和情景以及要求直接存取3D加速器卡的开发者来说,这种API使开发者很容易将现行的3D应用移至Windows 98平台上。(OpenGL则是一种精确高性能的3D技术,它大多数用于CAD/CAM模型、动画制作、模拟以及科学显像应用当中。)



  现在的游戏普遍采用directx,一方面原因是它的版本和功能更新的非常快,这一点opengl稍慢些,另一方面,directx不仅包括图像接口,还包括其它如输入设备声音网络视频等等接口,它包含了一整套多媒体功能,更容易被开发者采用。

opengl仅仅是个图形图像接口,基本不包括其它多媒体功能。它的优势是平台无关性。directx则是基于windows的,估计不能在mac和linuxsolars上使用。

另一方面,opengl在精确绘制图形上更具优势,大型3d建模软件基本上采用opengl绘制,而不是d3d。

以opengl为基础的3d游戏相比d3d的来说数量并不多,但也有重量级作品,idsoftware的doom3及其开发的新一代游戏引擎在图像方面都使用opengl。

游戏引擎对运行速度要求很高,所以在c++学习上应侧重高效算法和代码优化。看看quake3的源代码,你会发现,在很重要的运算上,它针对不同平台,不同cpu,进行了汇编指令级别的优化,很多除法,开平方的运算使用的算法比普通运算快几十倍,这也是保证游戏高速运行的基础吧。
软件
前端设计
程序设计
Java相关