DelphiX DxDraw画图的速度问题(50分)

  • 主题发起人 主题发起人 Miros
  • 开始时间 开始时间
M

Miros

Unregistered / Unconfirmed
GUEST, unregistred user!
用DxDraw在Surface上画一张 48 * 320的Bitmap居然要32ms????太恐怖了!

程序实现代码:
FSurface.LoadFromGraphic(Bmp); //加载Bitmap到Surface;
DxDraw1.Surface.Draw(0,0,FSurface, true); //这个过程居然要32 豪秒???
.....
有什么办法可以提高一下速度啊。
DxDraw的Options是[doCenter, doDirextX7Mode, doHardware];
我的机器配置 :
CPU P4 3.00GHz
内存 DDR 1GB
显示卡 NVIDIA GeForce 6600 内存大小256MB
Direct版本9.0c 硬件加速已经完全开启
为什么还会这么慢? 要是循环画800 x 600屏幕 FPS居然仅3!!!
很着急啊 高手帮忙啊!!
 
启动硬件加速的问题请看:http://www.huosoft.com/blogview.asp?logID=33&cateID=2
 
还是不行
 
请注意其它项要为FALSE,特别是DoSystemMemorey,如果还不行可能就是你安装的Delphix版本问题了
 
可以用直接写屏!
 
DxDraw的Options是[doCenter, doDirextX7Mode, doHardware];其他的都是False

DelphiX 用的是网上下的DelphiX_all_in_one_06.

to: 江远怎么直接写屏?

网上找了一写DelphiX的例子 无一例外图象都是存贮在DXImageList里的
通过DXImageList.Items[Idx].Draw向DxDraw主表面画图, 速度比较快,但
是大家有没有试过创建一个Surface 让Surface.LoadFromGraphic 使用
GetTickCount函数查看一下耗时,这还不仅, DxDraw主表面绘制这个Surface
时 DxDraw1.Surface.Draw...... 再GetTickCount函数看一下 .

所以DxDraw1.Surface.Draw于DXImageList.Items[Idx].Draw 速度上比起
来简直是天壤之别!!!

小游戏用DXImageList存储图象还可以大游戏恐怕不行了吧? 既然不行那
就应该是创建Surface并绘制之,但是速度[:(][:(][:(][:(][:(]

等待高人解决
 
回头研究一下!
 
这是unDelphiX1.07a的BUG,作者已作了声明:
* KNOWN BUGS OR RESTRICTION:
1/ Cannot be use DirectDrawSurface other from DXDraw.Surface in HW mode.
2/ New functions was not tested for two and more DXDraws on form. Sorry.
 
[:(][:(][:(][:(][:(][:(][:(][:(][:(][:(]
枉我都研究他个把星期了 居然是这个结果
 
你发到我BLOG上的代码我看了,应该是你程序的问题,与unDelphiX加速性能无关,修改后在我的电脑上FPS达到389
关键是你不需要每次在DXTimer1Timer中LoadFromGraphic(每秒LOAD 60次,什么电脑也受不了),只要在DXDraw1Initialize中LoadFromGraphic一次就可以了。如果有很多图片,可建一个Surface数组,程序启动时全部加载进去,传奇就是这么做的
 
关于传奇加载的问题我已经在你的Blog上说了点见解 建一个Surface数组 但是图片的数量如果很庞大的话, 内存恐怕吃不消的。
 
谢谢 火人大哥 我研究了一下传奇的SourceCode 发现是如果需要的Surface没有加载,则从文件加载如果已经存在则直接Draw
并且在没次被请求Surface的时候检查是否有需要释放的Surface并释放之.我也效仿了一下 但是速度也只到19~ 20
 
继续等待更好的解决方案....
 
你的代码不能下载,应该有办法的
 
接受答案了.
 
???为什么分没有加出去啊???
 
后退
顶部