directx(directDraw)与GDI

GDI(Graphics Deveice Interface,图形设备接口),利用GDI编程,可以不考虑硬件的具体特性,直接调用Windows API中的图形处理函数处理当前DC即可。这的确很方便,但却是以降低处理速度为代价。因为它不能直接访问硬件,需要通过操作系统间接访问。
Microfost 为迎合市场需求,推出了DirectX。它既能像Windows GDI一样使用方便,又可以直接对硬件抽象层HALL(Hardware Abstranaction Layer)操作,速度比GDI快得多。DirectX 主要包括 DirectDraw Direct3D DirectMusic DirectPaly DirectInput DirectSetup七部分。
也就是说DirectX是GDI的升级。

虽然两者都可以用来2D绘图,但差别还是很大的。

DirectDraw的功能上要远远大于GDI,因为DirectDraw多用于游戏开发,GDI或GDI+多用于软件开发。绘图功能就可想而知了。
而且GDI是用于Windows底层API作为基本绘图方法,比如Windows中的窗口都是GDI输出的,如果你学过SDK(API)编程的化,对此会很熟悉,比如你看看任务管理器的进程,几乎所有进程都需要加载一个重要的dll,那就是“gdi32.dll”.
而directdraw则多用于游戏中或媒体中,用于对图形操作更细腻的领域,当然目前更广泛的技术是Direct3D或OpenGL,当然directdraw也是DirectX中不可缺少的一部分。
总结一下。windows系统的绘图要求并不高,因此gdi是这里的老大,但对于专业的游戏或图形开发商,微软有创造了DirectX(其中包括directdraw)来满足他们的要求。

 

GDI为计算机用户和计算机硬件之间提供了一个抽象层,在此层的基础上,用户可以通过简单的调用Win32的图形函数进行图形显示。
GDI的一大缺憾就是,它不是为具有高表现力的多媒体软件和游戏而设计的,设计者们开发它的主要用途是运行商业应用软件诸如:Word字处理软件、Excel电子表格、Explorer浏览器等。GDI只提供了访问系统主存的能力,而不提供直接访问显存的能力,并不能从具有某些加速特性的显卡中获得其优良特性。简而言之,GDI对绝大多数的商业软件来说是相当完美的,但对于多媒体软件和游戏来说,它却是低速和低效的。
另一方面,DirectDraw可以提供给开发者代表了真实显示内存的绘图页面。这意味着,只要你使用了DirectDraw,你就可以直接操纵显卡上的内存,图形显示变得出奇的快速。而且这些页面代表了显存中连续的内存块,使得在页面中寻址和读写变得非常方便。

一句话,DirectDraw就是GDI的升级版 。

 

ddraw提供了直接显存操作功能,  
  但是对于集成显卡的意义不大,因为它使用的是内存作为显存来使用,显卡和内存之间的通讯是浪费时间的  
   
  另外从描述上看你改造后的算法已经不能算作是GDI操作了,而是直接内存地址操作  
   
  因此同样是内存之间的操作,   效率上不会有太大的区别的   
  独立显卡不同,ddraw可以直接操作显存,而gdi或者你的办法是对内存处理,然后从内存copy数据到显存,自然慢

 

 更多内容请访问:www.b2notes.com

使用asm分析jar包加载类

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值