游戏开发论坛

 找回密码
 立即注册
搜索
楼主: zlcnkkm

为什么还要用DX7?

[复制链接]

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-8-2 10:26:00 | 显示全部楼层

Re:为什么还要用DX7?

30楼的,这话不一定。
如果尽力去做一个大游戏那么可以不考虑版本问题。

但是目前用DDraw编的很多游戏都是不超过10M的小游戏,这时候就存在一个“用Dx8是否值得”的问题。

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
 楼主| 发表于 2005-8-3 17:26:00 | 显示全部楼层

Re:为什么还要用DX7?

偏题了。。。或许我应该用quanyy兄那句话作标题

quanyy:
争论的重点因该是用DDraw和D3D中的2D哪个开发效率高

14

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-8-10 16:23:00 | 显示全部楼层

Re: 为什么还要用DX7?

游戏是要从整体考律。但整体是由部分组成的,程序员作为程序部分的主导者,有必要力求技术的精进。只有这样才能最大限度的确保游戏设计者的设计完美的实现。至于国产游戏垃圾,不是程序员的错。中国这么多的游戏公司,有几家有真正的“策划”?一个都没有,能出个稍微像样点的就已经是奇迹了。我以前也不是没征招过策划,都TMD什么水平?要么只会东招西抄,要么只会说一大堆空话。有的捧着策划案过来,大谈传奇怎样,暗黑怎样。可一问32级的传奇道士升一级要砍多少骷喽,训练一个暗黑2角色大约会在多少级正式成型时立刻就哑了。连游戏都没玩过就在那里胡说,靠。

跑题了,不过,DX7与D3D之间,合适才是最好的。用DX7也不一定就非要用什么MMX,SSE。比如我的基于Gens改版的Gens32就是基于DDraw的图像输出并完全采用C 来写图像过滤器,而同样的Fusion则是D3D + MMX汇编。虽然Fusion的模拟内核绝对快于Gens,但因为用D3D拖了后腿,同样是将输出图像从16bpp转换为32bpp并放缩两倍同时进行平滑处理的操作,Gens32在P3 400上比Fusion大约会快10fps.同时就算Fps持平了,但由于D3D的过于“易用”,Fusion也无法像Gens32那样自由的执行变更色温,调节饱和度等操作。再加上DDraw的普级性会高于D3D,所以总体来讲,Gens32的图像处理系绝对在Fusion之上。

但我们的另一个2D游戏引擎则完全是基于D3D构建。因为此时并不需要用到DDraw的优点,而是更需要D3D的易用性。所以合适才是最好的,没什么非要用这个而不要用那个之类的理由。




89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-11 12:45:00 | 显示全部楼层

Re:为什么还要用DX7?

合适规合适,好用归好用,但概念要搞清

dx7是最后一个支持ddraw设备的版本,dx8及以后采用d3d设备,但是并不意味着我们一定要用3D的方式去实现2D的东西,因为只是换了设备,将ddraw的代码改为d3d的代码只需要改动很少的部分,因为ddraw最重要的处理图形的接口是Surface,d3d中同样保留了这个接口,我们同样可以用mmx和sse或者直接处理位图数据,只不过放着优秀的方法不用有点别扭,用dx7和d3d做比较是没有意义的,不是一个概念嘛

d3d和ddraw速度绝对是d3d快于ddraw,不用考虑,因为硬件设备都不一样,一个是老设备,一个是新设备,都差了好几个时代了

那么我们为什么要使用dx7呢,如何来看待这个问题?如果说从速度效率易用性来讲,dx7根本就没法和dx8及其以后的版本比,唯一要用dx7的无非就2个理由:1是硬件兼容性好,2是有人用着习惯(你也不能怪人家落伍),如果你有上面2个中的一个,那就用呗,没啥不好意思的

14

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-8-12 03:19:00 | 显示全部楼层

Re: Re:为什么还要用DX7?

bigbook2000: Re:为什么还要用DX7?

合适规合适,好用归好用,但概念要搞清

dx7是最后一个支持ddraw设备的版本,dx8及以后采用d3d设备,但是...


新设备未必会快于老设备,就好比C++不一定就会快于C一样(功能多少与运行速度往往会成反比)。支持才是最主要的。新的D3D在老设备上不好,而新设备上估计D3D与DDraw的区别估计都是可以乎略的了。所以总体来讲,在需要扩大用户群的情况下,用DDraw是明智的。另外,在不太依赖于DirectX自带函数的场合,用DDraw也是不错的。要说速度,直接写屏最快,但现在做不到。D3D虽然新,但在同样操作下有时不知会绕多少弯路出来。因此,相对原始的DDraw的速度在进行某些操作时应是在D3D之上的。比如进行相当复杂的2D图像过滤,放缩与渲染操作。进行这些操作时,运算的主力一般不在D3D所辖范围之内,并且显卡自带功能又不能满足需求。因此,数据所在区域响应CPU的速度越快越好(内存?),最后的显示环节自然是弯路越少越好(直接刷向主页面?)。当然,这只是在某些极特别的场合。






89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-12 12:40:00 | 显示全部楼层

Re: 为什么还要用DX7?

D3D虽然新,但在同样操作下有时不知会绕多少弯路出来


呵呵,自己拍脑瓜想的吧

拿C和C++类比?这能比吗

应该怎么比呢?拿PII CPU和P4 CPU比还差不多,为什么这么说?ddraw实际上是一组显卡指令集和,d3d呢也是一组显卡指令集和

我们不能以为d3d在2D方面是基于ddraw,也就是说不能认为ddraw是采用所谓的“原始”指令,而d3d是绕着弯子的去实现2D功能的

那么ddraw设备究竟能做些什么呢,其实ddraw设备什么图形运算功能都没有,他只是提供了一个访问显存的接口,我们自己常常做的什么alpha运算,色彩运算,变形缩放等等都是我们利用CPU来做的

那么d3d设备提供了什么功能呢,d3d设备也提供访问显存的接口(这个跟ddraw是一样的,注意不是基于ddraw之上的,而是一样的),同时d3d还提供了各种材质运算,色彩运算,矩阵变换,三角形运算,d3d还提供了可编程渲染指令(尽管不是所有显卡都支持),要说明的是,这些都是基于显卡指令的,也就是硬件处理而不是CPU模拟处理

在硬件不支持的情况下,d3d会自动转为软件处理也就是CPU模拟,软件模拟状态下我们可以认为要比我们在ddraw下自己写的CPU处理代码慢

上面说的材质运算,色彩运算,以及各种矩阵变换,我们不认为只是处理3D游戏用的,这个跟3D没有关系

还有所谓直接写屏技术,那是在没有显卡年代的产物,现在没有这个概念了,那个时候没有独立显存,内存中有一块区域对应屏幕上的点,直接改变内存的数据,屏幕上就出现不同的颜色,不要认为那个比现在显卡速度快,因为独立显存技术是专门应对高速度多媒体显示的,他的瓶颈只有一个,就是我们在处理图形的时候,从内存到显存,显存到内存的拷贝

在设计ddraw程序的时候,我们尽可能的提高CPU的速度,比如采用MMX,SSE等技术,并尽可能的把数据组织好,一次翻转到显存上,不要往显存上blt一些零碎的数据

在使用d3d设计程序的时候,我们尽可能的利用显卡指令去处理图形,不要使用CPU指令,也就是说不要使用CPU运算来计算显卡上的数据


又说了这么多,呵呵,自己有点不好意思了,不过技术的东西还是大家多讨论好

14

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-8-12 14:43:00 | 显示全部楼层

Re: Re: 为什么还要用DX7?

bigbook2000: Re: 为什么还要用DX7?



呵呵,自己拍脑瓜想的吧

拿C和C++类比?这能比吗

应该怎么比呢?拿PII CPU和P4 CPU比还差不多,为...


你误会我的意思了。
我指的情况是,在我们所要做的2D特效在显卡没有相应指令的情况下,比如将一张2D图像实时的转换为类似液晶点阵的效果,或者是实时的做类似某些PS的滤镜效果,并且源数据区必需是在内存当中。此时,我们所需要的仅仅就是一个“访问显存的接口”。不是吗?最近我劝我朋友升级机器时他就说过这样的话:我没必要升级,因为我的机器已经满足我的所需了。再多就将是浪费。

同理,在其附加功能完全没有任何用处的情况下(也可以说是可以无视显卡的场合),应用了D3D技术,其一,有可能D3D会从你这边剥夺出一些宝贵的控制权;其二,你要冒兼容性大打折扣所带来的风险。其三,从代码编写的角度来看,此种情况下D3D的代码与可维护性有可能不如DDraw.

我不认为为了完全没有用处的附加功能而承担本不必要的风险是件划算的事。这笔帐你也应该能算明白。

还有就是,可能是消费上的误区吧。呵呵,最新的真的就是未必就是最好的。就好比当年P4刚上市时,明显的P3更好一些。

另外,P4 3G与P4 2.4c哪个更好一些? P4 2.0与类似极别的AMD哪个更快? P4 2.0和AMD与苹果较新的CPU (好像是1.2G)哪个图像处理更快?
DC主机(主频200 M HZ)与P4 2.0 + 当前大众化的显卡 ,PS2与当前主流配置比,哪个玩游戏更好?

也许你不会太相信,但有些场合下,P4 3G不如 P4 2.4c,而P4 2.4c会和主频在1700左右的AMD持平,而这些又与仅有1.2 G的苹果电脑的处理器相当。因为P4执行指令的流水线最长,AMD其次,苹果的最短。如果你用过汇编的话应该了解,长流水线也就意味着出错概律与延迟的增加,从面导致执行速度的下将。至地于玩游戏,PS2的垃圾配置也是PC在很长时间内都无法与之相比的。







7

主题

136

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2005-8-13 17:22:00 | 显示全部楼层

Re:为什么还要用DX7?

其实.DX7里的DD操作还是很专业的.而且,也只有样的DD操作,才能发挥其最大能力.

3

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2005-8-24 14:54:00 | 显示全部楼层

Re:为什么还要用DX7?

DX都要被MS抛弃了,已经学会DX7了,何必在学个DX9

21

主题

126

帖子

144

积分

注册会员

Rank: 2

积分
144
QQ
发表于 2005-8-29 09:46:00 | 显示全部楼层

Re:为什么还要用DX7?

其实不用在意DX8的推广度,根据我五年前的经验,当用户得知了你的游戏(当时是我的共享软件)的好玩,他会愿意去下载那个不过20M(我不知道记错没有)左右的DX安装包(尤其是这个宽带普及的年代)
就像当年要让win95/97/98(注意不是win98se)安装约2M的runtime一样(当时宽带恐怕还是一种太过奢望的东西吧)
有个前提,必须告诉用户怎么做,要让一个电脑新手也大概知道你要告诉他什么(然后他再去请教高手)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表