文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发IT人生用DirectDraw编写动画程序
精品推荐
特别推荐
·值得回忆的本科四年学习(1-6)
·如何检测内存泄漏——重载new和delete
·Linux IPC小结
·编程初学者的良言警句
·如何用正确的方法写出高质量软件的75条体会
·一个程序员的经典自白
·程序员十大安全技巧
热点TOP10
·网管工作总结--我的网管生活经历
·李纳斯·托沃兹(Linus Torvalds):Linux之父
·华硕员工长篇记实:天堂向左,华硕往右
·将CStdioFile类扩展,读取UNICODE文本文件
·VC++学习方法及书籍推荐
·SP 短信开发-PROVISION接口实现-正向订购实例代码
·从ACM会议看中国大陆计算机科学与国外的差距-- 灵芯
·如何检测内存泄漏——重载new和delete
·用DirectDraw编写动画程序
·七年之后我逃离编程
·dotproject 安装总结
·老程序员十年生涯黯然总结
·回调设计模式
·IT人的酸甜苦辣 女测试工程师的成长
·Linux IPC小结
·一位30岁软件工程硕士的困惑
·值得回忆的本科四年学习(1-6)
·老程序员十年生涯黯然总结(四)
·SP 短信开发-PROVISION接口实现-反向取消实例代码
·世界五大顶级合法黑客和他们的创新故事

用DirectDraw编写动画程序

日期:2007年8月28日 作者: 查看:[大字体 中字体 小字体]


理论篇
  说起DirectDraw也许大多数人还不知其为何物,但一提到DirectX恐怕每一个Computer Fan 和Game Fan都再耳熟不过了。(什么!你没听说过DirectX!?Oh,My god!来人哪,拉下去重责五十大板!)DirectX又叫Game SDK,它最大的特点是直接对硬件的抽象层(HAL)进行操作,利用这个特点可以制作出高性能的Windows游戏。具体信息请见http://www. microsoft.com/directx/default.asp。
  DirectDraw就是DirectX5的6个组件之一。DirectX5的其它5个组件分别是:
  Direct3D:提供了3D硬件接口。
  DirectSound:立体声和3D声音效果,同时管理声卡的内存。
  DirectPlay:支持开发多人网络游戏,并能处理游戏中网络之间的通信问题。
  DirectInput:为大量的设备提供输入支持。
  DirectSetup:自动安装DirectX驱动程序。
  而DirectDraw则是DirectX的基石,DirectX的其它组件都是建立在它的基础之上的。DirectDraw使用页面切换的方法实现动画,它不仅可以访问系统内存,还可以访问显示内存,这是以往的Windows程序员所不能的。另外,我们利用DirectDraw还可以生成、移动、剪切、转换、合成图像数据,从而编写出各种“炫丽多彩”图形的应用程序。
  介绍了这么一大堆DirectX的理论,你的头是不是已经有些大了呢?心中一定在嘀咕:“哼,原来是个江湖骗子,光说不练。”各位看官不要着急,不把这些基础理论搞懂就去看下面的程序,你肯定是“洋鬼子看戏——目瞪口呆”。
  首先,让我们先了解一下DirectDraw的三个重要概念。
  1.表面
  在用DirectDraw编写程序时,我们先要创建若干个图形数据缓冲区,并把这些图形数据装入其中,再进行转换、拉伸、挎贝等操作,并且还可以显示这些缓冲区中的图形数据,这些缓冲区就称为表面。
  表面可以分为几类。
  主表面(primary surface)是用户在屏幕上可以看到的,它是显示内存的一部分。所有DirectDraw程序都有主表面,而且只有一个。它在DirectDraw表面对象之前就已经存在了,因此不能改变它的尺寸、格式和位置。主表面有一个很重要的特性——翻转。页面翻转用于程序中,可以产生相当平滑、不闪烁的动画。一个可以翻转的主表面实际上是两个表面,一个是可见的,一个是不可见的。不可见的表面称为后备缓冲区。当发生表面翻转时,后备缓冲区就成为可见的,而以前的可见表面则成为后备缓冲区。
  还有一 砻娼欣肫帘砻?off_screen surface),它是不能直接见到的。离屏表面作为存储缓冲区,有助于表面之间的互相切换,它的大小是可以改变的。
  主表面和离屏表面都分为有调色板的和无调色板的这两类。像素深度为8位(256色)的表面称为有调色板的表面;而像素深度为16位(64K色)、24位(16M色)的像素表面称为无调色板的表面,它们存储实际的色彩值(RGB值)。在本文下面的程序中,我们使用24位表面即无调色板的表面。
  2. Bltting
  Bltting是用于复制图形的语言,可以将图像从一处拷贝到另一处。例如大家所熟悉的CDC类(设备描述表类)的BitBlt()就是具有这样功能的函数。在DirectDraw中,典型的blt操作是将离屏表面的内容拷贝到一个后备缓冲区,而一般的blt操作调用一个源表面和一个目标表面,把源表面的内容拷贝到目标表面中,不仅可以整体拷贝源表面,而且还可以拷贝源表面内的任何矩形区域到目标表面的任何位置。blt还支持透明拷贝,就是指表面中的某一像素在blt过程中可以不予以拷贝,而这个像素值是由色彩键码(DDCOLOR KEY )决定的。
  DirectDraw中有三个支持blt的函数,它们是Blt()、BltBatch()、BltFast()。Blt( )用得最多,BltFast()的速度比Blt()要快,但功能却很有限,例如不支持拉伸、剪切等操作。
  还有一个函数BltSurface(),它是DirectWin类的一个成员函数,Blt()、BltFast()更具有适应性,并且使用起来更加简单。例如,当我们把源表面拷贝到目标表面外时需要裁剪,而BltFast()不支持裁剪。这时我们使用BltSurface()函数,它在内部使用Blt()和 BltSurface()函数,并根据情况自动执行裁剪。
  3.色彩键码
  DirectDraw 可以把某种颜色或某个范围的颜色指定为一个颜色值,这个颜色值是由DDCOLORKEY结构即色彩键码说明的,DDCORLORKEY结构说明如下:
  typedef struct _DDCOLORKEY{
  DWORD dwColorSpaceLowValue; //颜色范围的低端
  DWORD dwColorSpaceHighValue; //颜色范围的高端
  } DDCOLORKEY;
  当我们对表面进行拷贝操作时,表面中哪些像素不被拷贝是由色彩键码决定的。例如当DDCOLORKEY结构的两个分量都为零时,表面内所有置为零的像素都不能被拷贝。又例如,当表面是24位RGB模式时,若想指定RGB=(120,120,120)像素不被拷贝,则应该:
  DDCOLORKEY ddck;
  ddck.dwColorSpaceLowValue=RGB(120,120,120);
  ddck.dwColorSpaceHighValue=RGB(120,120,120);
  surf→SetColorKey(DDCKEY_SRCBLT,&ddck);

[1] [2] [3] [4] [5] [6] 下一页 




上一篇:几种MAIL SERVER的功能应用比较

下一篇:程序创业:小型软件公司如何做大

用DirectDraw编写动画程序 相关文章:
·IE浏览器再现严重安全漏洞 微软紧急发补丁程序
·[最新QQ空间代码]QQ空间花,漂浮物、开场动画代码
·C#编写的windows计算器-源代码
·不用任何软件(木马程序)盗取账号密码
·Dreamweaver MX 2004做ASP程序(4)用户注册系统
·用ASP编写网上调查投票系统
·破解程序及注册机使用方法
·Flash制作漂亮的三重卷动相册特效动画
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·用C语言实现Ping程序功能
用DirectDraw编写动画程序 相关软件:
·《最终幻想12》超清晰CG动画
·C语言程序设计
·Flash MX 动画制作实例教程
·3Dmax 动画教程
·Windows环境下32位汇编语言程序设计
·FLASH个人简历源程序(FLA)
·C语言程序设计视频教程 CSF 教材:谭浩强《c程序设计》
·零起点教你如何破解软件和制作注册机 and 视频+程序
·Sim Aquarium v2.06 -非常漂亮的海底世界屏幕保护程序
·硅谷 C++程序设计视频教程 齐幼菊

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot