DirectX简介 第二篇 DirectDraw简介

DirectDraw简介

1.       DirectDrawDirectX的基石,DirectX的其他组件,如Direct3D,都是建立在它的基础上的,用DirectDraw可以访问显卡上的内存,另外,DirectDraw还可以作为位图混合器,用它可以生成、移动和转换图像数据或对数据进行合成用于显示

2.       显示技术:图形协处理器、显卡内存DirectDraw允许我们指定在哪块内存区域中创建DirectDraw对象,以优化对内存的使用,在一般情况下,都必须把经常被CPU访问的内存缓冲区而且经常被图形协处理器操作的内存缓冲区放入显示内存

3.       DirectDraw对象:

(1)       DirectDraw:提供了改变系统显示模式、查询显示能力、控制内存使用、管理子对象等功能

(2)       DirectDrawSurface:它提供了生成平滑动画、操作覆盖图和访问GDI功能所需要的一切

(3)       DirectDrawPalette:这个对象提供了调色板化显示模式的颜色控制

(4)       DirectDrawClipper:这个对象允许用户创建运行于用户桌面窗口中的DirectDraw应用程序

4.       访问显示卡的软件层次结构之间的交互关系(GDI不支持直接访问显示内存之类的底层操作,另外对于诸如覆盖图这些游戏和多媒体开发人员感兴趣的高层功能它也不提供)

5.       当应用程序调用DirectDraw时,它将根据各组件的能力自动确定要调用与硬件相关的HAL功能还是调用一般性的HEL功能,如果没有提定要用HAL功能还是HEL功能,DirectDraw通常会使用HAL,因为HAL能够更好地利用硬件特性,如果指定的HAL功能没有找到,则使用相应的HEL功能代替,HEL有时会调用GDI的一些功能,而有时则直接访问硬件以完成一些简单的并与具体硬件无关的任务,偶尔HALHEL也会调用一个被称为是VFLATD的驱动程序层以访问显示卡上的内存,VFALTD把一些显示卡的段内存结构变成线性结构

6.       DirectX Properties对话框中的DirectDraw标签页面可用于调整DirectDraw的行为,以方便调试和在不同的计算机系统上模拟执行

7.       总体上,每个DirectDraw应用程序都是由以下几步组成的:

(1)      创建DirectDraw对象

(2)      设置协作级别

(3)      选择显示模式

8.       在一个进程中可创建多个DirectDraw对象,每个对象是互相独立的。接口和其他子对象在DirectDraw对象之间是不能共享的,其中唯一例外的是剪裁器,它可以共享

9.       DirectDraw设备:创建DirectDraw对象时,所生成的对象总是附属于宿主系统中与HAL相一致的DirectDraw设备的

为了让用户能够自由选择系统所支持的能力,必须使用DirectDrawEnumerate功能:这个功能将枚举所有已安装的设备(枚举函数通过为每个元素调用回调函数来获取信息列表,当调用枚举函数时,必须提供一下指向回调函数的指针)

10创建DirectDraw对象

1 DirectDrawCreate函数:这个函数将创建一个带有IDirectDraw接口的DirectDraw对象

2)可以代替DirectDrawCreateQueryInterface功能的函数是COMCoCreateInstance,这个函数根据一个接口的唯一标识返回指向接口的指针(一般不用)

   这个函数需要一些附加的代码才能正常运行,在使用前必须调用CoInitialize函数,使用后则调用CoUninitialize函数,另外,为了使对象称为一个可用对象,必须调用DirectDraw对象的Initialize方法

11.    可获取的资源

(1)       DirectDraw的版本

(2)       能力标志(DirectDraw对象的GetCaps方法可以返回性能指标结构,其中描述了哪些能力是得到了硬件的支持而哪些则是被模拟的)

(3)       显示内存(GetCaps方法返回的DDCAPS结构中,有两个成员变量分别存放了所有显示内存和剩余的显示内存)

12.   协作级别

(1)       协作级别可用于控制应用程序和系统及其它应用程序之间的交互程度。在调用DirectDraw其他方法之前必须设置协作级别(SetCooperativeLevel函数)

(2)       一般,DirectDraw应用程序可分为两类:全屏模式和窗体化模式,全屏模式使用的是DDSCL_EXCLUSIVEDDSCL_FULLSCREEN标志,而对于窗体化应用程序,则必须使用DDSCL_NORMAL标志

13.   显示模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值