| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2656 人关注过本帖
标题:OpenGL与Direct3D的一点点对比
只看楼主 加入收藏
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
结帖率:100%
收藏
 问题点数:0 回复次数:4 
OpenGL与Direct3D的一点点对比
现在我学了Direct3D,跟去年学的OpenGL对比了一下,发现了一点情况。
OGL是业界标准,许多非Windows操作系统下还找不到D3D
OGL的色彩比D3D的要好,表面更光滑
OGL的函数很有规律,不像D3D的,都是指针method,函数名太长了!!
OGL是右手坐标系,这是数学里用惯了的.D3D虽然也可以改变成右手坐标系,但是需要d3dx9_36.dll的支持
OGL的常用Matrix,如WorldMatrix都封装好了,D3D要自己写。
OGL的绘图方式很灵活,而D3D的则要事先定义好FVF,要等所有信息写进Stream中才绘制。这就使它产生了VertexBuffer和IndexBuffer.好象微软嫌D3D的Buffer不够多?搞的多不好学??看人家OGL,哪里要这个东西?
D3D有好多版本,要是显卡不支持就废柴一垛了。而OGL从几年前就一直没变过,所以大部分显卡都支持。
还有,我发现D3D的半透明功能有很大的问题!!就是两个半透明的物体前后顺序的问题——前面的会被后面的挡住

但是D3D也有比OGL好的地方:
D3D支持许多格式的图片文件,而OGL载入jpg都得自己写代码。
因为D3D是指针调用模式,所以做D3D的钩子有难度,从而增加了外挂的制作难度。
D3D是DirectX的成员。程序员要实现声音播放可以用DirectMusic,配套用总是好的,而OGL则只能画画
D3D是被微软大力推广的连接库。相反,微软则大力压制OGL(都是Microsoft参与研制出来的产品,待遇怎这么大?)
正因为此,D3D已成为中国大型游戏界的主流(我觉得他们是盲目跟风。其实国外很多游戏都是用OGL)

其实我觉得用Direct3D开发2D游戏还是不错的,因为它支持Alpha透明,而DirectDraw我看都快淘汰了。
以上就是我的概括。大家还有什么要补充的?

[[it] 本帖最后由 flyue 于 2008-2-24 15:58 编辑 [/it]]
搜索更多相关主题的帖子: OpenGL 
2008-02-24 15:37
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
微软与3D图像(节选)
Alan Akin 著

      1995年至1996年,微软实行了一项新计划,以支持在Windows95上运行游戏,目标是把市场扩展到被任天堂和世嘉控制的游戏领域。然而,微软不想用已经在NT上提供的OpenGL技术。微软收购了Rendermorphics,Ltd.并得到他的被称作RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D。
    微软,推行Direct3D,冻结OpenGL!
    微软当时拒绝了在Window95上支持OpenGL。不止如此,微软采取异常手段收回对OpenGL的MCD驱动接口的支持,以致硬件厂商不得不放弃已经进入最后测试的OpenGL驱动。微软的市场部门开始向游戏开发商、硬件厂商、新闻出版机构推销Direct3D,同时排斥OpenGL。
      API之战!
      Silicon Graphics和很多OpenGL用户都依赖OpenGL创新且高性能的技术。但很明显微软打算用Direct3D代替OpenGL,尽管D3D有很多问题而且不能像OpenGL那样被硬件厂商扩展。Silicon Graphics决定在1996 SIGGRAPH会议上作一项演示。演示证明OpenGL至少和D3D一样快,从而驳倒微软的市场论调。因为OpenGL是业界公认标准,比D3D功能丰富,而且图像质量要高一些,所以演示在计算机图形和游戏开发社区导致了激烈论战。
    游戏开发者要求OpenGL和D3D站在同等地位!
    当技术和市场问题暴露,强烈的支持OpenGL行动开始了。Doom的开发者John Carmack声明拒绝D3D,Chris Hecker在游戏开发杂志上发表了两套API的全面分析,作出微软应放弃D3D为结论。游戏开发者先后两次向微软递交请愿书。第一次由56名首席游戏开发者要求微软发行OpenGL MCD驱动,但未成功,因为会让OpenGL与D3D竞争。第二次的公开信由254人签名开始,截止时达到1400人。微软的回答仍是重申旧市场立场。尽管请愿者清楚的要求两套API同等竞争以促进发展,微软却以增加D3D的投资、更加减少OpenGL的投资为回应。
      Fahrenheit——D3D与OpenGL的合并?
      Silicon Graphics,Microsoft, HP,Intel达成协议联合开发下一代3D API——Fahrenheit。但不了了之,因为微软的打算是把OpenGL的技术用到D3D里并且以此之名驱除OpenGL的威胁。 (估计DirectX 8 Graphics即是剩下微软独自开发的Fahrenheit,吸收了OpenGL的很多东西。)
      OpenGL豪气不减当年!
      OpenGL依然是唯一能与微软单独控制的D3D对立的API,尽管Silicon Graphics不再以任何微软不能接受的方式推行OpenGL。然而游戏开发这是独立的,并且很多关键人物在用OpenGL,因此,硬件厂商正努力提高对其支持。D3D仍不能支持高端图像和专业应用,而OpenGL主宰着这些土地。在开放源码社区,Mesa项目正提供独立于微软的OpenGL驱动。

      表面上好像D3D比OpenGL支持更多的功能,其实由于D3D不支持硬件扩展,如硬件全景阴影,硬件渲染顺序无关半透明材质等新技术根本无法使用,而D3D(特指D3D8)本身提供的功能只有一小部分能在使用HAL且硬件不支持时模拟,你需要用大量的代码来分析硬件是否支持此技术,从而采取不同的设置。

[[it] 本帖最后由 flyue 于 2008-2-24 15:49 编辑 [/it]]

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-02-24 15:44
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
[转]关于选择Direct3D还是OpenGL
看到很多刚接触游戏编程的人都在问这个问题, 这也是个比较通俗的话题了。我再发表一下自己的拙见吧。
其实学好了两者之一, 都完全可以做出你想要的东西。 关键看适不适合自己, 学好一个,要转入另一个也是非常的容易。它们无非是两套非常酷的3d渲染API, 而背后支持它们的3d图形学的精髓是一致的, 尽管他们有各自独特的地方, 但把顶点数据传入显卡的基本功能是等价的。

如果你C++基础较好, 完全可以任意选择其中的一个, Direct3D是DirectX的组件, 这要求对COM和接口调用要有一定的了解, 毕竟DirectX SDK整个都基本上基于C++的,当然C也可以使用,但绝对麻烦一些, 而且面向对象的思想贯穿于整个DirectX之中。
而Opengl语言无关平台无关, 而主要的使用语言是C, 可以说非常的大众话, 而且函数调用相对D3D要简洁的多, 可以说C++还不熟的人可以尽量选择Opengl, 而且方便的是: Opengl的程序更容易网上发布和展示,而D3D总拖不了较新的DirectX  
以前自己初学时,也是不分青红皂白的两个一起学, 但都只是很浅的了解, 好好看了一些关于图形学的书后, 最后还是根据自己的实际把重心转移到了Opengl上来。

Opengl和Direct3D,仔细的看他们的API形式, 非常有对称性, 这也是侧面反映3d渲染流水线和3D图形学的本质是一致的, 所以学好一门, 转向的容易也是由此体现,尽管他们还有很多各自的特性,这个嘛, 需要自己去慢慢研究了。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-02-24 15:53
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
Direct3D和OpenGL
Direct3D  

要讲Direct3D不能不讲DirectX, DirectX是微软开发并发布的多媒体开发软件包,其中有一部分叫做DirectDraw是图形绘演API,提供对图形的强大的访问处理能力,而在DirectDraw中集成了一些三维图形相关的功能,叫做Direct3D。大概因为是微软的手笔,有的人就说它将成为3D图形的标准。  

OpenGL  

OpenGL是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。OpenGL就是支持这种转换的程序库,它源于SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。SGI在1992年7月发布1.0版,后成为工业标准,由成立于1992年的独立财团OpenGL Architecture Review Board (ARB)控制。SGI等ARB成员以投票方式产生标准,并制成规范文档(Specification)公布,各软硬件厂商据此开发自己系统上的实现。只有通过了ARB规范全部测试的实现才能称为OpenGL。1995年12月ARB批准了1.1版本,最新版规范是1999.5通过的1.2.1。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-02-24 15:54
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
请问什么是Direct3D和OpenGL
Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API。它是由微软(Microsoft)一手树立的3D API规范,微软公司拥有该库版权,它所有的语法定义包含在微软提供的程序开发组件的帮助文件、源代码中。Direct3D是微软公司DirectX SDK集成开发包中的重要部分,适合多媒体、娱乐、即时3D动画等广泛和实用的3D图形计算。自1996年发布以来,Direct3D以其良好的硬件兼容性和友好的编程方式很快得到了广泛的认可,现在几乎所有的具有3D图形加速的主流显示卡都对Direct3D提供良好的支持。但它也有缺陷,由于是以COM接口形式提供的,所以较为复杂,稳定性差,另外,目前只在Windows平台上可用。

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等。Microsoft公司在Windows NT和最新的Windows 95中提供了OpenGL标准及OpenGL三维图形加速卡(如北京黎明电子技术公司的AGC-3D系列三维图形加速卡)的推出,OpenGL将在微机中有广泛地应用,同时也为广大用户提供了在微机上使用以前只能在高性能图形工作站上运行的各种软件的机会。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-02-24 15:55
快速回复:OpenGL与Direct3D的一点点对比
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018044 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved