首  页   最新日志    火人论坛        火人作品    编程园地    网络日志    网友作品     留言本本     关于火人
用户登陆
用户:
密码:
 

站点日历
73 2018 - 1 48
 123456
78910111213
14151617181920
21222324252627
28293031




日志搜索

 标题   内容

 
 
图片特效ImageEffect1.0 for Asphyre310 (带源码) Delphi编译指令说明
多云 关于unDelphiX的硬件加速
   [分类:编程园地][发表日期:2006-1-8] [发表:huasoft[查看:142219]

DelphiX出现较早,众多的程序员对它进行过改进,其中最重要的一项就是支持硬件加速。但目前unDelphiX版本众多,各版本之间又不全兼容,有些朋友不知下载的unDelphiX是否支持硬件加速,或者支持又不知如何应用,下面火人以delphix all in one(http://www.micrel.cz/Dx/)为例,作下简要说明(会的也看一下是否表述有误):
使用硬件加速,用如下代码:
程序代码:[ 复制代码到剪贴板 ]
      If NOT (doDirectX7Mode in DXDraw.Options) Then
        DXDraw.Options := DXDraw.Options + [doDirectX7Mode];
      if NOT (doHardware in DXDraw.Options) then
        DXDraw.Options := DXDraw.Options + [doHardware];
      if NOT (do3D in DXDraw.Options) then
        DXDraw.Options := DXDraw.Options + [do3D];
      if doSystemMemory in DXDraw.Options then
        DXDraw.Options := DXDraw.Options - [doSystemMemory];

不使用硬件加速,用如下代码:
程序代码:[ 复制代码到剪贴板 ]
      if do3D in DXDraw.Options then
        DXDraw.Options := DXDraw.Options - [do3D];
      if doHardware in DXDraw.Options then
        DXDraw.Options := DXDraw.Options - [doHardware];
      if NOT (doSystemMemory in DXDraw.Options) then
        DXDraw.Options := DXDraw.Options + [doSystemMemory];
      If doDirectX7Mode in DXDraw.Options Then
        DXDraw.Options := DXDraw.Options - [doDirectX7Mode];

注意1:应用时要在上面代码段前插入DXDraw.Finalize;代码段后插入DXDraw.Initialize;
注意2:控件包带的例程中并没有打开硬件加速,所以要手工加入上面的代码,或者直接更改控件属性,这样才能看到效果
注意3:这点很重要,就是DXDraw的doWaitVBlank:=FALSE。因为doWaitVBlank:=TRUE表示与显示器刷新频率同步,一般的显示器刷新频率为60,这样的话FPS就不会超过60,不过程序发布的时候,这项最好还是为真,这样程序在每台电脑的运行速度就会差不多了。



[19] [20] [21] [22] [23] [24] [25] [26] [27] [28]  ... [28]  

引用这个评论 火人 于 2006-05-31 08:20 PM 发表评论: 
请按文章中说明的方法打开硬件加速,另外要注意其它项为FALSE

引用这个评论 Miros 于 2006-05-31 03:06 AM 发表评论: 
用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!!!
 很着急啊  高手帮忙啊!!

引用这个评论 huasoft 于 2006-01-08 06:41 PM 发表评论: 
ALPHA越多,计算量越大,速度必然越慢。当然也跟CPU、显卡和引擎本身的局限有关(在我的电脑上150个精灵能达到160FPS),所以一般成熟的游戏会慎用ALPHA资源,象传奇这样的大游戏在一屏中用到ALPHA的地方很少超过10个
如果必须要用,只有想法让图片更小和更简单以减少计算量来提升速度

引用这个评论 白乐天3 于 2006-01-08 04:56 PM 发表评论: 
感谢火人大侠,如上设置,确实看到了提升的性能效果。我原来通常画面的FPS为70多,提升后最高能到300。
但是当精灵数量多起来的时候(我测试时用了140余个精灵放在画面上),FPS又再度跌至20多,和没有提升前的效果差不多。有什么办法能精灵数量多的时候提升一点速度呢?降低一些画面质量也可以。

[19] [20] [21] [22] [23] [24] [25] [26] [27] [28]  ... [28]  

 

发表评论
发表: 用户:  密码:   注册?  
验证码    
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 

Copyright © 2006 All rights reserved. Design by huosoft

电话:13974847258    QQ群:7155339
Powered by L-Blog V-Blog 2004-2005