DirectDraw VS GDI

6 篇文章 0 订阅
5 篇文章 0 订阅

  GDI,是微软提供给应用开发人员提供的一个图形编程接口。它提供了很多设备无关性的图形接口,这些接口包含了从字体处理到位图操作几乎所有的功能。GDI实现这些功能是通过一个被称为显示驱动接口(DDI)的驱动程序来操作具体的图形硬件。DDI 层中的功能是由硬件生产商开发的,他们为自己的产品提供显示驱动程序。在显示驱动程序中,所有的硬件功能都被隔离(如下图)。因此如果你想对底层图形硬件操作,那GDI就无能为力了(如直接访问显存之类的操作)。正因为GDI有此些缺陷,微软才开发一套应用于多媒体和游戏开发的Directx技术。其中DirectDraw又是DirectX重要组成部分,那什么是DirectDraw呢?

  如果你是一个做游戏开发人员,那么对DirectDraw一定不会陌生了!DirectDraw DirectX 应用程序编程接口(API)的一个部件.它使得你可以直接地对显存操作,硬件位图映射(hardware blitter).支持硬件覆盖及换页技术(flipping surface),同时它又兼容GDI编程。

                 

   DirectDraw 采用HAL/HEL 结构。(如上图)当应用程序调用DirectDraw 时,它将根据各组件的能力自动确定是要调用与硬件相关的HAL 功能还是调用一般性的HEL 功能(对于DirectDraw 来说,HEL 功能基本上是保持不变的,而HAL 功能则与具体的硬件有关)。如果没有提定要用HAL 功能还是HEL 功能,DirectDraw 通常会使用HAL,因为HAL能够更好地利用硬件特性。如果指定的HAL 功能没有找着,则使用相应的HEL 功能代替。HEL 有时会调用GDI 的一些功能,而有时则直接访问硬件以完成一些简单的并与具体硬件无关的任务,如内存访问等。偶尔HALHEL 也会调用一个被称为是VFLATD 的驱动程序层以访问显示卡上的内存。VFLATD 把一些显示卡的段内存结构变成线性结构。如果想深入了解的话可以看一下《Inside-DirectX从入门到精通》。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值