首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

关于Directdraw的疑义

2013-07-09 
关于Directdraw的疑问最近正在Wince6.0上面使用directdraw绘制大量的图片数据。之前是用GDI的方式处理,速度

关于Directdraw的疑问
最近正在Wince6.0上面使用directdraw绘制大量的图片数据。
之前是用GDI的方式处理,速度跟不上,听说用directdraw可以提高速度。
但是我看sample code发现,一般创建了页面以后,还是调用页面的GetDC方法得到DC,然后用gdi的方式绘制上去,这和gdi的方式有多大区别?
说directdraw可以直接使用显卡内存,难道directdraw的快是体现在可以直接从显存到屏幕,而不用从内存到显存再到屏幕?
求各位前辈指点。
[解决办法]
快,是直接操作显存

但如何操作,例如:用 DC 操作,时间还是要的
[解决办法]
my opinion:
1.形成动画用flip,直接交换buffer指针,比gdi重新填充buffer内容快。
2.显存是一块连续区域,bitblt可以加速,而gdi的blt是不连续内存区域,所以慢。
[解决办法]

引用:
引用:my opinion:
1.形成动画用flip,直接交换buffer指针,比gdi重新填充buffer内容快。
2.显存是一块连续区域,bitblt可以加速,而gdi的blt是不连续内存区域,所以慢。

gdi的blt是不连续内存区域???


据我所知,gdi 的blt 内存在物理上不一定连续哈,需要查找数据才会慢,如果是一块连续内存区域,直接搬数据就行了,这就是blt加速的原理吧。
[解决办法]
用rgb565的bmp来贴图,已经跟操作显存速度差不多
[解决办法]
其实gdi的速度并不慢,我是指bitblt,我用这个显示视频,完全没有问题。前提是你的图像数据dc的格式要和你屏幕的一致,比如都是RGB565,那么速度会灰常快。其实内存拷贝到显存,和直接操作显存,时间差不了多少。内存复制是很快的,主要的时间其实是花在图像的转换上面。另外,用ddraw可以直接显示yuv的格式,不用getdc,再bitblt。

热点排行