1秒钟内画25帧图片,CPU占用率很高,如何解决?(100分)

  • 主题发起人 主题发起人 【小高】
  • 开始时间 开始时间

【小高】

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我想用实时画图的方式实现动画,1秒钟内画25帧图片,CPU占用率很高,有什么办法可以解决吗?
我试了两种方式
一是:
Image1.Picture.Bitmap.LoadFromStream(tempStream);
二是用DelphiX ,

CPU占用率都很高,哪位有没有好的解决办法??
 
多线程执行。 cpu就下来了。
 
GDI的性能当然不够DX的好,有条件的话用DX。 还有你绘制的内容有多少分辩率?还有绘图的算法也很重要,哪个区域要重画, 哪个不用之类…… 一系列的条件判断比你盲目的重画效率要高N倍。
 
现在的机器速度,使用GDI来播放VCD还是很慢的
 
最好使用delphix,只要用它的surface.draw功能即可,速度应该是最高的了
因为它使用的是directx接口实现的绘图
 
多线程执行。 cpu就下来了。

-----------------
不可能的.
 
to duhai_lee:
你的方法是错的, 可不要误导了
to 小高
你的问题很简单,只要在画图的循环体内加以下一句即可
sleep(1)
意思是把1毫秒的cup时间还给cpu
 
对,使用MMX可以一次处理多笔数据,应该是可以的。
 
多利用DIRECTX及MMX等,最好还要用到显卡的硬件加速。
 
你的问题很简单,只要在画图的循环体内加以下一句即可
sleep(1)
意思是把1毫秒的cup时间还给cpu

--------------------
sleep 的精度没有 1ms 这样高.至少就是50ms
 
我用GDI+, 1024 * 768, 每秒40帧,CPU占用100%。
后来,我换了方法,还是GDI+,图象移动的时候,CPU占用效果和VISIO差不多,效果不错。
如果是大量的、大屏幕的图象移动,比如游戏,建议还是DX好(星际的CPU占用率也是相当高的,100%差不多);如果只是实现VISIO或者CAD之类软件的功能,只需要局部移动,GDI、GDI+都是不错的选择。
局部移动,并不需要刷新整个屏幕。
 
如果你只有一个线程,不断得工作,没有调用设备IO,Sleep, WaitXXX等函数,CPU当然会是100%,freebird_hrt兄弟得说明,加入Sleep(1),是可以解决CPU占用率得问题得,就看你是否可以满足每秒24得要求。每秒这么高得频率话,最好还是不要用GDI。
另外QSmile同志把定时器和Sleep函数混淆了,
Sleep函数得精确度是有可能精确到1ms得,就看你得CPU处理能力和当时得运行环境了。
(如果在我新配置得酷睿II(双核64位)跑,单线程是不会100%得,哈哈)
 
楼上的吃上扣肉拉,哈哈
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部