GDI的效率真的很低吗?DirectDraw还有用吗? ( 积分: 50 )

  • 主题发起人 主题发起人 someset
  • 开始时间 开始时间
S

someset

Unregistered / Unconfirmed
GUEST, unregistred user!
从三年前第一次用DirectDraw时就有这样的疑惑,因为用DirectDraw改写GDI代码后的程序我记得仅仅快了不足15%。而平常用GDI也不觉得效率低,无论是字体、几何图形还是BITBLT大量操作都相当有余力,改用DDRAW后多写了一堆的代码,却没有预期的效率提升;而欲直接操作显存时效率就变得非常低下了。
是不是我的用法有问题呢?或说现在的显卡都为GDI做了大量优化,执行效率早就不是问题了?包括一些测试,所显示出的结果GDI分值远超DDRAW,当然两者分值是不能直接相比的,但直观上的确是GDI绘图更让人眼花缭乱(包括BITBLT)。现在还有人用DDRAW吗?
 
从三年前第一次用DirectDraw时就有这样的疑惑,因为用DirectDraw改写GDI代码后的程序我记得仅仅快了不足15%。而平常用GDI也不觉得效率低,无论是字体、几何图形还是BITBLT大量操作都相当有余力,改用DDRAW后多写了一堆的代码,却没有预期的效率提升;而欲直接操作显存时效率就变得非常低下了。
是不是我的用法有问题呢?或说现在的显卡都为GDI做了大量优化,执行效率早就不是问题了?包括一些测试,所显示出的结果GDI分值远超DDRAW,当然两者分值是不能直接相比的,但直观上的确是GDI绘图更让人眼花缭乱(包括BITBLT)。现在还有人用DDRAW吗?
 
DirectDraw是较底层的,他所支持的基本操作就只有BitBlt。如果你需要在画面上输出文字等,应该做的是把所有的文字预先转换成图片。如果你采用DDraw,但是所有的作图操作都采用Lock之后用GDIAPI来操作,那实质上还是GDI.
DDRAW就像给了你一张纸,完全由你自己控制,而GDI就像是官僚机构,下文件下命令,他们的操作构架是不同的。
 
除了显示文本,我没用过Lock什么的,主要当然也是BitBlt操作
但和GDI的BitBlt函数效率差不太多啊
而且搞不清楚为什么直接写显存会那么慢?和DOS时代学到的不符:|
 
这要看你做什么工作, 我主要是做平面(2D)矢量图形(CAD)方面的工作,
使用GDI比DDraw要快很多, 可以参考我的例子程序: http://idelphi.ys168.com
 
自然,因为DDRAW没有矢量函数
不过我写的是游戏类的,想证实是不是DDRAW有较大优势,可我的结论却是并不比GDI快多少
好像是一直以来被某种关念误导着的感觉
而且GDI在2000下还能实现ALPHA混和,GDI+更强,用DDRAW是难以做到的(要用D3D也行)
 
如果画平面图,个人觉得用GDI好,毕竟有一堆函数可用,可要是3D图,还是用DIRECT3D

毕竟那里也有一堆函数啊, ^_^

至于DIRECTDRAW,只是一个底层的东东,留给MS去用吧!
 
行了,结贴~
 

Similar threads

后退
顶部