关于Directdraw的疑问

jieleiping 2013-04-07 05:26:27
最近正在Wince6.0上面使用directdraw绘制大量的图片数据。
之前是用GDI的方式处理,速度跟不上,听说用directdraw可以提高速度。
但是我看sample code发现,一般创建了页面以后,还是调用页面的GetDC方法得到DC,然后用gdi的方式绘制上去,这和gdi的方式有多大区别?
说directdraw可以直接使用显卡内存,难道directdraw的快是体现在可以直接从显存到屏幕,而不用从内存到显存再到屏幕?
求各位前辈指点。
...全文
351 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwqwqw408 2013-05-17
  • 打赏
  • 举报
回复
其实gdi的速度并不慢,我是指bitblt,我用这个显示视频,完全没有问题。前提是你的图像数据dc的格式要和你屏幕的一致,比如都是RGB565,那么速度会灰常快。其实内存拷贝到显存,和直接操作显存,时间差不了多少。内存复制是很快的,主要的时间其实是花在图像的转换上面。另外,用ddraw可以直接显示yuv的格式,不用getdc,再bitblt。
jieleiping 2013-05-15
  • 打赏
  • 举报
回复
引用 8 楼 cclutpk 的回复:
bitblt可以启用DMA加速
同问,怎么启用?
liangxd09 2013-05-10
  • 打赏
  • 举报
回复
用rgb565的bmp来贴图,已经跟操作显存速度差不多
u010192845 2013-05-10
  • 打赏
  • 举报
回复
不如选择一个高速度的cpu,比较直接点~
xqhrs232 2013-05-08
  • 打赏
  • 举报
回复
引用 8 楼 cclutpk 的回复:
bitblt可以启用DMA加速
怎么启用?
zjyou_me 2013-05-08
  • 打赏
  • 举报
回复
请问楼主问题解决了吗,遇到同样的问题
cclutpk 2013-04-12
  • 打赏
  • 举报
回复
bitblt可以启用DMA加速
freedom_wyz 2013-04-11
  • 打赏
  • 举报
回复
my opinion: 1.形成动画用flip,直接交换buffer指针,比gdi重新填充buffer内容快。 2.显存是一块连续区域,bitblt可以加速,而gdi的blt是不连续内存区域,所以慢。
freedom_wyz 2013-04-11
  • 打赏
  • 举报
回复
引用 6 楼 xqhrs232 的回复:
引用 5 楼 freedom_wyz 的回复:my opinion: 1.形成动画用flip,直接交换buffer指针,比gdi重新填充buffer内容快。 2.显存是一块连续区域,bitblt可以加速,而gdi的blt是不连续内存区域,所以慢。 gdi的blt是不连续内存区域???
据我所知,gdi 的blt 内存在物理上不一定连续哈,需要查找数据才会慢,如果是一块连续内存区域,直接搬数据就行了,这就是blt加速的原理吧。
xqhrs232 2013-04-11
  • 打赏
  • 举报
回复
引用 5 楼 freedom_wyz 的回复:
my opinion: 1.形成动画用flip,直接交换buffer指针,比gdi重新填充buffer内容快。 2.显存是一块连续区域,bitblt可以加速,而gdi的blt是不连续内存区域,所以慢。
gdi的blt是不连续内存区域???
jieleiping 2013-04-08
  • 打赏
  • 举报
回复
引用 1 楼 91program 的回复:
快,是直接操作显存 但如何操作,例如:用 DC 操作,时间还是要的
版主前辈,可否抛弃DC操作呢?这样应该就会快了吧
xqhrs232 2013-04-07
  • 打赏
  • 举报
回复
也有这样的疑问没解决!
91program 2013-04-07
  • 打赏
  • 举报
回复
快,是直接操作显存 但如何操作,例如:用 DC 操作,时间还是要的

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧