嵌入式开发的绘制问题,GDI和DirectDraw各有何优劣?

时间:2021-07-25 19:43:23
我在WinCE.Net开发一个需要绘图的程序,使用GDI绘图,但是在图形快速移动时总是会有残影,我已经使用了内存DC进行缓存,绘制完成后再全部bit到屏幕DC上,可是仍没有改善,现在想换用DirectDraw,不知道这种方式可以解决这个问题吗?

10 个解决方案

#1


谁能说一下DirectDraw和直接调用GDI绘图,这2种方式的优劣呢,帮偶扫扫盲,高分相谢啊

#2


DirectDraw是DirectX中的一个组建,与GDI不同的是GDI并不像DirectDraw那样具有硬件渲染管道,不很确切的说,如果你的系统具有显卡这类设备并能被正确使用的话,那么DirectDraw会使用硬件渲染管道进行操作,而GDI只是建立在高层上的绘图软件包,而不具备这样的硬件操作特性。所以,在硬件许可的情况下,DirectDraw的性能会大大高于GDI。

但是,不知道你用WinCE是否是开发PDA上的程序,如果是的话,不能保证DirectDraw的效果一定会优于GDI,因为如前所述的,DirectDraw与硬件的性能,特别是显卡有直接的关系。

#3


能不能提供EVC开发DirectDraw的部分源码,让我快点入门,嘻嘻

#4


致 wjwjwj(wangj):
  我是在WinCE.net上开发,这么说如果没有好一点的显卡,DirectDraw实际就用不起来?集成的显卡行不行呢?

除了渲染管道之类的技术,其他方面的操作用DirectDraw可否更快呢,因为我只要快速绘制一些点、线、面就可以,不需要太复杂的显示,什么抗锯齿啊、渲染啊都不要,有没有质的提高呢

PDA上的游戏是怎么开发的能,物体的快速移动好像也挺快的,PDA的显卡很好么?

#5


首先,渲染管线之类的技术你不用去弄明白。DirectDraw会自己处理,能用硬件渲染就用硬件渲染,不能的话,就用软件渲染的方法实现。所以,这方面你不用担心。一般情况下,DirectDraw的程序的性能大于等于GDI的性能,所以,用DirectDraw肯定要比用GDI好。但如果你没用过DirectX并且你只想绘制一些点、线、面,建议你不要用DirectDraw,你可以试一下OpenGL,如果你的操作系统支持OpenGL的话(可以查一下你的操作系统是否有opengl??.dll这样的库存在,如果存在,则支持),你可以使用OpenGL这样的开发包,入门简单,功能也不比DirectDraw弱。

#6


DirectDraw肯定会比GDI快,实现的功能也比GDI多,MS在下一步操作系统中将不一定支持GDI,原因就是GDI的上述缺点。DirectX是与OpenGL竞争的图形API,初期的DirectX并比不上OpenGL,但是由于MS的大力支持,现在OpenGL在娱乐领域已经基本消声匿迹了。
对于楼主提到的绘图应用,如果要快的话,可以使用DirectDraw直接向视频映射内存写入数据,速度比用DC要快很多,可以试一下。

#7


ok,谢谢,不知是否可以推荐一下这方面的书籍呢

#8


还有,如果我要绘制3D图形,也只能用DirectDraw是吗?

#9


64750632

===============================
    CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
软件!
    界面: http://qqwwee.com/
    下载: http://qqwwee.com/csdn.rar 包含源代码

#10


如果绘制3D图形的话,在DirectX中就不是DirectDraw了,而是Direct3D了。但还是建议用OpenGL,DirectX毕竟是微软的东西,限制太大。另外,OpenGL本来就不是在娱乐业用的很多,所以也称不上消声匿迹。OpenGL还是势头强劲,要不然,也不会出高版本了,毕竟是一个工业标准。

#1


谁能说一下DirectDraw和直接调用GDI绘图,这2种方式的优劣呢,帮偶扫扫盲,高分相谢啊

#2


DirectDraw是DirectX中的一个组建,与GDI不同的是GDI并不像DirectDraw那样具有硬件渲染管道,不很确切的说,如果你的系统具有显卡这类设备并能被正确使用的话,那么DirectDraw会使用硬件渲染管道进行操作,而GDI只是建立在高层上的绘图软件包,而不具备这样的硬件操作特性。所以,在硬件许可的情况下,DirectDraw的性能会大大高于GDI。

但是,不知道你用WinCE是否是开发PDA上的程序,如果是的话,不能保证DirectDraw的效果一定会优于GDI,因为如前所述的,DirectDraw与硬件的性能,特别是显卡有直接的关系。

#3


能不能提供EVC开发DirectDraw的部分源码,让我快点入门,嘻嘻

#4


致 wjwjwj(wangj):
  我是在WinCE.net上开发,这么说如果没有好一点的显卡,DirectDraw实际就用不起来?集成的显卡行不行呢?

除了渲染管道之类的技术,其他方面的操作用DirectDraw可否更快呢,因为我只要快速绘制一些点、线、面就可以,不需要太复杂的显示,什么抗锯齿啊、渲染啊都不要,有没有质的提高呢

PDA上的游戏是怎么开发的能,物体的快速移动好像也挺快的,PDA的显卡很好么?

#5


首先,渲染管线之类的技术你不用去弄明白。DirectDraw会自己处理,能用硬件渲染就用硬件渲染,不能的话,就用软件渲染的方法实现。所以,这方面你不用担心。一般情况下,DirectDraw的程序的性能大于等于GDI的性能,所以,用DirectDraw肯定要比用GDI好。但如果你没用过DirectX并且你只想绘制一些点、线、面,建议你不要用DirectDraw,你可以试一下OpenGL,如果你的操作系统支持OpenGL的话(可以查一下你的操作系统是否有opengl??.dll这样的库存在,如果存在,则支持),你可以使用OpenGL这样的开发包,入门简单,功能也不比DirectDraw弱。

#6


DirectDraw肯定会比GDI快,实现的功能也比GDI多,MS在下一步操作系统中将不一定支持GDI,原因就是GDI的上述缺点。DirectX是与OpenGL竞争的图形API,初期的DirectX并比不上OpenGL,但是由于MS的大力支持,现在OpenGL在娱乐领域已经基本消声匿迹了。
对于楼主提到的绘图应用,如果要快的话,可以使用DirectDraw直接向视频映射内存写入数据,速度比用DC要快很多,可以试一下。

#7


ok,谢谢,不知是否可以推荐一下这方面的书籍呢

#8


还有,如果我要绘制3D图形,也只能用DirectDraw是吗?

#9


64750632

===============================
    CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
软件!
    界面: http://qqwwee.com/
    下载: http://qqwwee.com/csdn.rar 包含源代码

#10


如果绘制3D图形的话,在DirectX中就不是DirectDraw了,而是Direct3D了。但还是建议用OpenGL,DirectX毕竟是微软的东西,限制太大。另外,OpenGL本来就不是在娱乐业用的很多,所以也称不上消声匿迹。OpenGL还是势头强劲,要不然,也不会出高版本了,毕竟是一个工业标准。