DirectDraw学习总结

本文介绍了DirectDraw的基础概念及其核心组件,包括DirectDraw对象、Surface对象等,并探讨了Blt函数的功能及BMP文件格式,适合DirectDraw初学者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DirectDraw学习总结 

      最近一段时间,一直在学习DirectDraw. 在这里把自己学习的一些浅浅的体会写出来.因为自己工作中只使用很少的DirectDraw,所以也没有深入研究.基本上是浅尝辄止把.

     要学习DirectDraw. 首先要熟悉COM. DirectX利用COM 实现了程序的无缝升级.这是DX一个很大的优点,用户无需对特定版本的DX编写程序.开发出来的程序基本可以在所有的Windows平台上运行. DirectDraw最高的版本是DirectDraw7, Directx8.0后即把DirectDraw与DX的3D部分合并了,(3D部分我未有涉及), DirectDraw主要有以下几个部分组成.DirectDraw对象,Surface对象, Clipper对象.Palette对象等.综合这些对象,可以实现高品质的2D图像处理. 如2D游戏,视频播放等.

 首先介绍DirectDraw对象.该对象由IDirectDraw对象标识. 代表了机器上的显示设备(也就是显卡). 该对象用来确定显示模式,色深, 分辨率等等,并控制Surface等其他对象.

Surface对象代表了视频表面,每个Surface对应了一块内存. Surface分为Primary Surface, backbuffer Surface,OffScreen Surface, Primary Surface代表主显示表面,也就是用户在屏幕上看见的部分,.backBuffer Surface 是Primary Surface的后备缓冲, 用来与Primary Surface 形成视频切换链,从而达到高速显示图形的目的.BackBuffer Surface只存在于全屏模式下.OffScreen Surface代表一块存放位图的一块内存,用来存放程序中经常用到的图片,并可以在窗口模式下实现双缓冲,避免屏幕闪烁.

这里要提一下Blt,这是DX的核心内容,Blt函数可以实现单色填充表面,两个表面图像之间的拷贝,并可以实现在拷贝过程的图形放大与縮小(该处理是自动进行的.只要源拷贝区域大小与目的区域大小 不同即发生).Blt 还提供了色彩键屏蔽功能,从而实现透明拷贝.

下面要说一下BMP文件格式,因为该文件在图形处理中经常使用.BMP文件由四部分组成.BMP FileHeader,BMP Info Header, Palette Table, Image Data. 其中Palette Table是可选的, 只有在bmp文件色深为8位,使用调色板的情况下才会存在. 下面让我们看一下BMP Info Header的结构

typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize; 
  LONG   biWidth; 
  LONG   biHeight; 
  WORD   biPlanes; 
  WORD   biBitCount; 
  DWORD  biCompression; 
  DWORD  biSizeImage; 
  LONG   biXPelsPerMeter; 
  LONG   biYPelsPerMeter; 
  DWORD  biClrUsed; 
  DWORD  biClrImportant; 
} BITMAPINFOHEADER, *PBITMAPINFOHEADER; 
该结构中的biHeight位要注意,当该位为正数时,图形为倒置的,即位图的(0, 0)点存放的是原始图形的
(0, iHeight-1)的像素.这一点要切忌.还要注意的一点就是对齐问题,.这个问题在Surface和BMP图像文件
中都存在.处理行的时候一定要以pitch为单位.
最后再说一说Clipper和Palette对象.Clipper主要用来裁剪图像,防止绘制窗口之外的像素或者图像.
Palette对象主要用在256色模式下.被用来给DirectDraw对象设置调色板属性,256色模式现在很少被使用.
先写这么多,主要是一个大纲性质的,记住自己认为的要点,方便自己使用时察看.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值