逐梦旅程:Windows游戏编程之从零开始[试读]
6.1 定时器动画显示
第6章 光与影的交汇——Windows游戏动画技术 对于那些已经不在的人们,就算只是偶尔也好,请想起他们的事。 ——《最终幻想10》 章节导读 从本章开始,我们将开始学习2D游戏动画技术了。 在2D游戏中,播放动画的方式一般有两种,第一种是直接播放影片文件(比如AVI、RMVB等等影片格式),这常常用在游戏的开头动画、过场动画与结局动画中。另一种则是在游戏中利用连续贴图的方式,来达到动画显示的效果。其实,游戏程序本身几乎都是以无限循环的方式来不断地在游戏窗口中进行窗口画面重绘的操作,即使画面没有任何变化,这个重绘的操作依然在不断地进行,直到游戏程序结束运行为止。 本章我们将介绍制... 查看全部[ 6.1 定时器动画显示 ]
6.1.2 WM_TIMER消息响应
6.1.2 WM_TIMER消息响应 响应定时器发出的WM_TIMER消息有两种方式,第一种是通过SetTimer函数的第四个参数,指定出响应函数。第二种反射就是在消息处理函数中,通过对WM_TIMER消息添加相应响应代码。 通常我们会采取第二种方式,在消息处理函数中对WM_TIMER消息添加相应响应代码。 首先,我们需要在调用SetTimer函数时,把第四个参数取为NULL。 1. SetTimer(hwnd,1,100,NULL); 然后,在消息响应函数中添加相应的响应函数,下面是消息处理函数WndProc()函数中的部分代码: 1. //------------------... 查看全部[ 6.1.2 WM_TIMER消息响应 ]
6.1.3 删除定时器
6.1.3 删除定时器 定时器建立后,就会一直自动地按照定义设定的时间间隔来发出WM_TIMER消息,如果要停用某个定时器,必须调用专门用于删除定时器的API函数——KillTimer。KillTimer,人如其名,为“杀死”(Kill)定时器(Timer)而生。我们可以在MSDN中查到这个函数的定义如下: 1. BOOL WINAPI KillTimer( 2. _In_opt_ HWND hWnd, 3. _In_ UINT_PTR uIDEvent //定时器代号 4. ); ■ 第一个参数,HWND类型的hWnd,我们的老朋友窗口句柄。 ■ 第二个参数,UIN... 查看全部[ 6.1.3 删除定时器 ]
6.1.4 示例程序GDIdemo6
6.1.4 示例程序GDIdemo6 这个程序中我们使用了定时器,来显示连续的静态图片,产生出动画效果。 素材方面,是在网络上收集的一张gif动图,然后在Photoshop中一帧一帧导出为bmp图片的,如下: 0.bmp 1.bmp 2.bmp 3.bmp 4.bmp 5.bmp 6.bmp ... 查看全部[ 6.1.4 示例程序GDIdemo6 ]
6.2 游戏循环动画显示
6.2 游戏循环动画显示 在本节开头,首先给大家一个大体的认知。本节我们讲的“游戏循环”技术,是目前Windows游戏中普遍采用的动画显示技术。 上一节中我们讲解了用定时器来产生动画的效果。定时器的使用固然简单方便,但是事实上这样的方法仅适合用在显示简易的动画以及小型的游戏程序中。因为一般而言,游戏本身需要显示顺畅的游戏画面,使玩家感觉不到延迟的状态。基本游戏画面必须在一秒钟之内更新至少25次以上,这一秒钟内程序还必须进行消息的处理和大量数学运算甚至音效的输出等操作。而使用定时器的消息来驱动这些操作,往往是达不到所要求的标准,差强人意的。 这里我们要提出一种“游戏循环”的概念,”游戏循... 查看全部[ 6.2 游戏循环动画显示 ]
6.3 透明动画
6.3 透明动画 透明动画是GDI游戏开发中经常会用到的基本技巧,它通过图案的连续显示及图案本身背景的透明化处理,在背景图上产生出栩栩如生的动画效果。 在第5章里,我们介绍了使位图背景透明的两套方法,分别是透明色彩法和透明遮罩法。而在上一节里我们刚刚讲解了使用游戏循环来显示动画的技巧(用定时器也可以的),而这节透明动画的内容,刚好是两者的一个综合。如果对这两方面知识有遗忘的话,可以翻到本书讲解这两方面内容的地方进行温习。 其实两套透明体系的任意一种在这里都可以使用,我们在讲解过程中和最后的示例代码里都是采用的操作起来简便的透明色彩法。 素材选择方面,我们使用的是一张国产单机游戏第一品... 查看全部[ 6.3 透明动画 ]
6.4 排序贴图
6.4 排序贴图 “排序贴图”是源自于物体远近呈现的一种贴图概念。回忆我们之前一直运用的贴图思想,先进行距离比较远的物体的贴图操作,然后再进行近距离物体的贴图操作,一旦定出贴图的顺序之后就无法再改变了。 然而这样的作法在画面上物体会彼此遮掩的情况下就会不适用。也许会出现后面的物体反而遮住了前面的物体的这种不协调的画面。为了避免这种因为贴图顺序固定而产生的错误画面,必须在每一次窗口重新显示时动态地重新决定画面上每一个物体的贴图顺序。 那么,如何动态决定贴图顺序呢?我们可以采用排序的方式。 为了演示排序如何运用在贴图中,我们举一个例子。假设现在有10只要进行贴图的小牛图案,先把它存在一个... 查看全部[ 6.4 排序贴图 ]
6.5 章节小憩
6.5 章节小憩 恭喜,学到这里,现在你已经算是小半个Windows GDI游戏编程大师了。 我们在本章中重点学了一些游戏动画技术。动画显示技术一般有两种:定时器和游戏循环。我们现在已经基本上都使用游戏循环来显示动画和制作游戏了。透明动画相当于动画显示技术和透明贴图的一个结合。而排序贴图使我们做出来的游戏更加逼真。 下一章我们将学习Windows游戏消息处理,这样,就可以真正地写出一些小游戏了。 其实所有漂 泊的人,不过是为了有一天能够不再漂泊,能用自己的力量撑起身后的家人和自己爱的人。 希望现在正在看这本书的朋友们都加油,早日让自己变得强大,能不再漂泊,能有力量去守护身后的家人和... 查看全部[ 6.5 章节小憩 ]
书名: 逐梦旅程:Windows游戏编程之从零开始
作者: 毛星云
出版社: 清华大学出版社
出版年: 2013-9-16
页数: 679
定价: 98.00元
装帧: 平装
ISBN: 9787302337508