| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12655 人关注过本帖, 1 人收藏
标题:接触了这么久的Direct3D和OpenGL,发现还是Direct3D好啊...
只看楼主 加入收藏
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
结帖率:100%
收藏(1)
 问题点数:0 回复次数:22 
接触了这么久的Direct3D和OpenGL,发现还是Direct3D好啊...
在D3D没有出现我满意的版本之前我将一直学习和使用OpenGL。
哎...D3D实在太令我失望了...

我将列出D3D与OGL的对比,并且发一个OpenGl的教程给大家。
OpenGL主站:www.
函数说明:http://www.

先发一个:
OpenGL教程.rar (622.75 KB)



指出Direct3D9存在的一些问题:(以下DirectX等都是指最常见的第DX9版本)

1.无法移植,只能在微软的操作系统上运行。要知道,在国外使用Linux系统的人是很多的,如果你用D3D做游戏,那他们将无法运行。
大家不妨试着在baidu,google,yahoo等搜索引擎下搜索“Direct3D”和“D3D”,你将会发现比较有价值的信息很少。

2.版本众多。现在的DirectX组建是10版本的,可想而知其有多少个版本?光D3D常用的就有7,8,9三个版本。不同的版本之间的有些函数是不一样的,这导致了从旧版本更新到新版本的一系列问题。而且版本多也对网络资源共享不利。

3.使用烦琐。DX的所有成员都是以COM的形式存在的,这说明了其所有关键操作都是通过指针及成员函数来调用的。就不说其他的,满满一屏幕的指针就看得我眼花缭乱,谈何游戏开发??有时间的朋友不妨试试,Direct3D的初始化工作就够你受的了。

4.设备容易丢失。自从我学DirectX以来,我就发现不论是D3D也好,DDraw、DInput也罢,只要你对系统有一些剧烈的操作之后,它的设备就丢失了。所以我总觉得DX是一个“漏口袋”,稍微抖抖就漏了,漏了就又要重新初始化设备、重新读取资源。

5.画质不佳。我曾经拿D3D和OpenGL绘的图象做了个对比,就是用同样的参数绘制同样的图象。我发现D3D的颜色明显不精确。这对于做游戏来说或许影响不大,但是做专业绘图工程就不行了。难怪D3D始终无法战胜OpenGL,我想这或许就是原因之一吧。

5.功能鸡肋。Direct3D的功能比OpenGL的多,这个我承认。但我发现D3D的这些OpenGL所没有的功能都是一些“几百年难得一用”的功能,而且当前多数显卡都不支持这些功能,就算是那些D3D的游戏开发这也很少用。
至于那些ID3DX***组建,我只想说,功能多,但不好用。要知道OpenGL提供了许多底层的操作函数,而D3D则没有。

7.HWND和HDC的问题。Direct3D的初始化是一定要一个窗口的句柄(HWND)的,而OpenGL的初始化只需要一个设备描述符(HDC)就可以了。了解界面编程和图象编程的朋友应该都清楚这意味着什么吧——你可以通过一个HWND获得其HDC,而不能用一个HDC来得到其HWND。这说明OpenGL可以很方便地在任何有HDC的东西上绘图(我见过许多人用MFC单文档来做OpenGL),而用Direct3D做这个将变得复杂(我是测试了好久才知道怎样用MFC做D3D的……在网络上根本没有关于这方面的资料……)。

8.坐标问题。D3D支持空间左手坐标系和右手坐标系,而OpenGL只有右手坐标系。这看起来不是D3D比OGL更好嘛?其实不然,多了一种坐标系的选择,等于给新手多设了一个门槛,很多人就是因为这个而分不请东南西北上下左右的,曾经听说过某游戏公司里的程序员们由于没有商量清楚,一些是用左手坐标系,一些是用右手坐标系,搞得最后手指比得都抽筋了(数学上习惯用左手和右手来比坐标系的xyz的方向)还没有分清到底哪个坐标系,大家都稀里糊涂地

上面这些不是暂且忍了,但是……以下这些问题是让我决定放弃D3D的最主要原因:
9.取图不精。在3D绘图里,都要把一张图片上的某部分贴到一个片面上。但是问题来了,在D3D里的图片(纹理)坐标是用float来计的,浮点都是有精度的,当精度不够用时就会出现误差。所以在贴图过程中产生了误差而使得最终显示的图片产生偏移(虽然u、v坐标只偏移了1个像素)。这是很严重的问题,或许在绘制3D模型时这点小误差不影响大局,但是我现在是用D3D来绘制2D图象啊,哪怕是一点点误差都不能容忍的

10.半透明问题。在Direct3D中规定,绘制一系列透明和半透明物体时,要先画不透明的,再画透明的(OpenGL中有这个规定吗?),好,那么如果所有的物体都是透明的那该怎么办呢?先画什么呢?D3D又有个规定:先画离摄象机近的,再画离摄象机远的(OpenGL中有这个规定吗?)。原来D3D有这个规定啊,难怪玩了许多游戏都发现有些地方的半透明处理得乱七八糟的,印象最深的是玩仙剑4时,在一个有黄色半透明光带的地图(这个光带环绕了整个地图,记不得那地图叫什么名字了),如果你有心的话,不难发现,透过某个光带看另一个光带,你将看到那个越远的反而在近的那个光带的上面,即越远的看起来反而更近,近的反而跑到更远去了!很严重的问题!!

这些问题看起来是小问题,但小问题往往决定了你的游戏的质量。在微软没有解决这一系列问题之前,不用Direct3D。以前一直不解为什么那些高手们总是用OpenGL,现在是了解了……还算不晚吧
[color=White]

[[it] 本帖最后由 flyue 于 2008-8-30 10:51 编辑 [/it]]
搜索更多相关主题的帖子: OpenGL 
2008-07-20 14:08
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
期待你的后续。
2008-07-20 16:11
xuanzilie
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-12
收藏
得分:0 
准备成为精品
2008-07-20 16:20
sente
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-6-25
收藏
得分:0 
还在想着做游戏啊………………………………

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳。
2008-07-20 17:23
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
永远在做游戏...我别无所求,学编程就是为了做游戏
在研究游戏的路上没有尽头...

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-07-20 20:15
永久的守护
Rank: 1
等 级:新手上路
威 望:2
帖 子:425
专家分:6
注 册:2007-6-9
收藏
得分:0 
[bo][un]flyue[/un] 在 2008-7-20 20:15 的发言:[/bo]

永远在做游戏...我别无所求,学编程就是为了做游戏
在研究游戏的路上没有尽头...

你现在在做什么?
你做的游戏能有经济效益么(或者说你的目标有这个元素么)?再或者你不准备考虑这个问题?
如果为了获取经济效益,你最近有什么目标没?有团队没?
你对现在的游戏市场和其未来怎么看?


我这上网不太方便 上QQ也是
所以不方便私聊 同时把问题全问出来了
有点无礼 请见谅!

见了便做做了便放下了了有何不了,慧生于觉觉生于自在生生还是无生。
活则生变,简而至稳。
2008-07-21 11:08
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
Q:你现在在做什么?
A:我在做3D游戏引擎

Q:你做的游戏能有经济效益么(或者说你的目标有这个元素么)?再或者你不准备考虑这个问题?
A:我做游戏只是为了好玩,并且让我长大后不会后悔当初年少的时候没有做出个东西来

Q:如果为了获取经济效益,你最近有什么目标没?有团队没?
A:我做这个不是为了经济效益,如果我做出来了我将把项目开源,给广大网友免费共享。我最近的目标是再温习一下OpenGL的函数。我没有开发团队,我计划在工程发布初期版本时让感兴趣的朋友加入。

Q:你对现在的游戏市场和其未来怎么看?
A:现在的中国游戏市场尚处于初期发展的阶段,有人气的游戏都局限于几个大公司。目前中国的大部分3D游戏都是使用国外的游戏引擎,完全自主国产的少之又少,所以我要开发游戏引擎。
我发现在网络上有关游戏开发的资料也很缺乏,那些有经验的人不愿意拿出自己的成果给人们分享,导致了后来者所面临的问题很多又难以得到解决。等这些后来者学成之后又走先人的路子不开源,这样使得游戏开发行业进入一个死循环当中,发展的缓慢可想而知。
我将用我的业余时间来研究游戏引擎的开发。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-07-21 16:47
爱喝牛奶的猫咪
Rank: 1
来 自:QQ群46520219
等 级:禁止访问
帖 子:513
专家分:0
注 册:2008-6-16
收藏
得分:0 
LZ看过OGRE没有?


[color=white]<>
2008-07-21 17:35
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
看过,外国的一游戏引擎。
网游《天龙八部》就是用OGRE做的

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-07-21 17:45
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
我宿舍一同学天天玩天龙八部,不能自已。我也看过它的画面,在国产的网游中算是不错的。史玉柱的网游那个画面两个字:垃圾。还好意思说自己的游戏是国产老大。
2008-07-21 20:26
快速回复:接触了这么久的Direct3D和OpenGL,发现还是Direct3D好啊...
数据加载中...
 
   



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

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