DirectX8如何使用DirectDraw?

SnHnBn 2003-12-19 05:58:36
初学DX,还请各位高手多多指教。
众所周知,在DX8及以后的版本中,DDraw和D3D一起集成在了DirectGraphic中。但令我困惑的是,在DX API中,似乎DDraw和D3D还是分开的接口。而SDK文档中却没有DirectDraw的资料。
到底要怎么使用DDraw?是按照SDK中的例子用IDirectDraw7接口还是直接用D3D,固定一个2D场景就行了?
如果用IDirectDraw7接口,是不是意味着DX8和DX7对DDraw提供的功能和特效都是一样的,没有任何扩展和改进?
如果直接用D3D的接口做2D画面,在有硬件支持的条件下,是不是会有更多的画面效果?而速度会不会比DDraw要慢?

请各位前辈帮忙解决我的一系列疑惑,谢谢。
...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SnHnBn 2003-12-22
  • 打赏
  • 举报
回复
谢谢各位,刚刚去看了www.gameres.com的两篇文章,果然收获颇多。
azheng0305 2003-12-22
  • 打赏
  • 举报
回复
呵呵,DDRAW的版本最新为7.0,一直没有更新过,如果你下载了7.0以后版本的SDK,仍然只能使用7.0的DDRAW。具体用法可以去网上下载一个DDRAW的中文指南。

微软之所以不更新DDRAW,的确有道理的。

现在大家做程序都在D3D做的,所有的2D的东西也是在D3D里做的,以前一直讨论的Alpha混合什么的,现在已经可以有D3D硬件直接支持计算了,只要设置一个硬件的状态值,就可以处理所有的Alpha的工作,包括3D和2D的。

速度绝对比DDRAW7的Alpha混合方法快,因为D3D9是用显卡GPU直接计算的,硬件支持,而DDRAW7必须由CUP计算,软件模拟而已。

其实如果刚学习DX,我建议从DX9入手比较容易,DDRAW只是看别人的算法的时候需要,因为很多好的算法,很多好的思想,以前都在DDRAW做的,你必须看懂。D3D9很容易,做2D的东西也方便。
天堂里的死神 2003-12-22
  • 打赏
  • 举报
回复
3D绘制的想法主要是利用x-z平面绘图,并且舍弃ZBuffer等一系列仅仅在3D世界中有更大意义的机能。平面绘图也主要利用纹理而不是模型。

www.gameres.com有一篇这样的文章,讲解D3D如何绘制2D图片,有兴趣可以查找一下。
EndDuke 2003-12-22
  • 打赏
  • 举报
回复
信已经发出,请查收:)我那个是为了游戏中自己绘制控件写的,希望对你有帮助
SnHnBn 2003-12-22
  • 打赏
  • 举报
回复
加分,再顶一下。
谁能告诉我3D绘制2D图形的方法,能否利用到显卡的2D硬件加速功能,也就是说对于一些3D性能比较差的显卡,使用3D绘制平面图会不会比用DDraw慢?
SnHnBn 2003-12-21
  • 打赏
  • 举报
回复
感谢各位帮助。
有几点我想说明一下:
1、我用DirectX不是开发游戏,我要实现的功能就是平面的快速绘图,不是立体的。所以“放弃 DDraw”并不意味着进步。
2、Alpha混合可能要快速实现,并且是经常使用的功能。如果3D的平面效果在这方面如honghaier(红孩儿) 所说要更简单,我会选简单的。
3、DDraw的确比较简单,但我更关心的是实现的功能是否更强更快,而不是是否更复杂,当然一般来讲,越简单的东西速度越快。
4、如果使用3D的平面绘图功能,我担心是不是集成显卡性能不济,我要做的东西对性能要求很高的。

谢谢EndDuke(游戏狂徒) ,我想看看你的3D平面输出的代码。我的邮箱:SnHnBn@163.net
IONPhantom 2003-12-21
  • 打赏
  • 举报
回复
放弃 DDraw 吧,技术总是进步的,人也跟着进步吧,不要老抱着以前的东西不放了
EndDuke 2003-12-21
  • 打赏
  • 举报
回复
DX8的平面应用更容易理解基本的,真得很不错!
lyzcom 2003-12-21
  • 打赏
  • 举报
回复
DirectDraw到7就没有了,后面的DX8和DX9都没有DirectDraw。要使用DXDRaw,就看DX7的文档,或者MSDN2001以上版本。

前面有一些兄弟说忘记DirectDraw吧,这句话我很不赞成。具体的原因很简单,计算机是一门自然科学,自然科学之间是全部有联系的。DirectDraw同样是一门技术,可以学学,他对很多的基本的概念和原理性的东西都有帮助。而在D3D下,这些东西都不会再有,讲3D的书都只会去讲如何的3D,而不会去讲一些基本的东西。
HashCodeWithJava 2003-12-20
  • 打赏
  • 举报
回复
没有DDraw8
EndDuke 2003-12-20
  • 打赏
  • 举报
回复
DX8中所带有的Draw是DX7的接口,不是DDraw8(也从来没有过这东西)

DX8中的平面输出已经和D3D结合在一起,使用顶点操作!这个使“DDraw8”强大明了许多,同时也麻烦了许多,我这里倒是有写了一半的DX8的平面输出类,你可以拿去看看!把信箱给我:)
火云洞红孩儿 2003-12-19
  • 打赏
  • 举报
回复
DX8中对DDRAW的操作主要依赞

CDisplay和CSurface两个对象
这两个对象将原本复杂的DDRAW初始化和一些其它操作封装得简单易用~
比如DDRAW初始化
用这两个对象几行代码就搞定~
但是说真的,如果你已熟练掌握DX7中的DDRAW编码方式~
会更加理解DDRAW的精髓~
D3D做2D很好的一个例子是ALPHA混合.
当初2D下DDRAW做ALPHA混合,
在D3D下是很简单的一种状态设置就可搞定~
速度?很快~,不慢~,
以上是我的个人理解~

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧