1《易语言DirectX支持库教程》前言DirextX是一款微软公司出品的比较好的二维图形制作工具,易语言也提供了个DirextX支持库。本文将介绍如何使用这个DirextX支持库来制作应用程序。DirextX的优点就是画图片的速度快,操作基本上是非常方便的,包括可以使用控制手柄进行游戏的编程。除了广泛应用于游戏编程之外,其实,它也可以应用于大图片的快速显示运用,如地理信息系统等。DirextX支持库的特点是,先在后台画好图,然后再显示到前台来,这是DX的基本方法,大家只要了解了,就可以进行下面的学习了。在本文中,将把DirextX支持库及其相关技术简称为D2D或DX。学习D2D需要以下的基础:1.有较好的美术基础,能画出原创漂亮的图形,有使用PhotoShop或Paniter绘图软件的实践经验;2.了解微软BMP位图的相关知识,知道位图深度以提供支持库指定格式的图片,还可以运用到粒子系统上;3.会三维建模,如果制作动态的角色,需要掌握3DSMAX,画出角色的样子,然后将每一帧抓下来存为BMP图片组使用。4.最好能看过易语言OpenGL的教材,对屏幕的处理方式有所了解。5.了解图层的概念,页面的概念与图层的概念差不多。6.有一定的写游戏的基础,如以前用易语言写过简单的2D平面游戏。7.有数学及物理学基础,对于动力物理学有一定的研究。8.有面向对象的编辑基础,因为D2D中很多都是直接对象操作,这样编程才较为方便。9.如果想要编写网络型的2D游戏,那就要有网络编程的基础。本书参考的例程有:“无敌战机”、“超级玛丽”、“传奇世界”等程序。“无敌战机”、“超级玛丽”源代码在易语言安装目录中有。“传奇世界”源代码下载网址:=124&ID=96728&replyID=&skin=0神2的DirectX特殊效果展示:=124&ID=107309&page=4《OpenGL支持库及向导使用教程》=115&ID=76705&replyID学习任务:通过本文的学习,大家可以掌握基本的DirextX编程方法。2目录一.基本知识...........................................................................................................................2二.画一个屏幕背景图...........................................................................................................5三.显示模式...........................................................................................................................8四.页面绘图.........................................................................................................................10五.镂空效果.........................................................................................................................13六.角色移动.........................................................................................................................16七.动画鼠标.........................................................................................................................18八.发射子弹.........................................................................................................................19九.程序优化.........................................................................................................................22十.角色动作.........................................................................................................................24十一.地图移动.....................................................................................................................26十二.拼接地图.....................................................................................................................31十三.叠加模拟窗口.............................................................................................................31十四.操作杆控制器.............................................................................................................31十五.声音播放.....................................................................................................................31十六.矩阵操作.....................................................................................................................32十七.图像混合(半透明效果).........................................................................................32十八.粒子系统.....................................................................................................................33十九.脚本语言.....................................................................................................................33二十.降低内存.....................................................................................................................33二十一.网络通讯.................................................................................................................33二十二.总结.........................................................................................................................33一.基本知识1.什么是DirectX?DirectX包含绘图设备组件(DirectDraw),输入设备组件(DirectInput)、音频设备组件(DirectMusic),网络通讯组件(DirectPlay)等。但不使用DirectX大家也可以完全实现同样的功能,如图形方面可以使用OpenGL,网络方面可以使用WinSock。DirectX处于应用程序与硬件之间。应用程序指的是我们所开发的游戏程序,如果使用的是图形组件,硬件指的是显卡。我们指示DirectX要完成某个功能,如果硬件支持这个功能,DirectX会调用显卡驱动程序来完成,称为“硬件加速”;如果硬件不支持这个功能,DirectX会使用软件模拟,称为“软件模拟”。当然,硬件加速要比软件模拟快很多。32.输入设备组件/DirectInput如果你玩过网络游戏,你一定对“左手按着键盘,右手握着鼠标”这两个动作很熟练。要控制游戏,DirectInput可以帮我们处理键盘鼠标的输入。不仅如此,DirectInput还可以处理操纵杆,实现有趣的力反馈。3.音频设备组件/DirectMusic如果让你塞住双耳度过一天,相信你会很难受。同样,如果游戏里没有可以影响玩家情绪的音乐,就会显得相当的沉闷。国内著名的角色扮演游戏《仙剑奇侠传》,许多人认为它的成功百分之六十来自于它那些扣人心弦的音乐。DirectMusic在游戏开发中扮演着音乐演奏家这一重要角色。4.网络通讯组件/DirectPlayDirectPlay应用于网络传输,但早期的DirectPlay版本效率很低,以至于游戏开发者们都宁愿使用WinSock。DirectX8.0版开始,微软对DirectPlay整个模块都重新进行了构造,比起以前的版本有了很大的进步。5.绘图设备组件/DirectDrawDirectX中的DirectDraw应用于2D图形,可惜微软从DirectX8.0版开始DirectDraw便不再更新了,DirectDraw一直只停留在7.0版,不过不要紧,它依然可以工作得很好。大家在DirectX9.0版中仍可以使用DirectDraw7.0。6.双缓冲动画技术也许你早已了解,所谓的动画,只是一些静态图片快速切换所做出来的视学效果。应用于游戏,实现动画效果的一般方法是先清屏,在屏幕画上第1幅图像,再清屏画上第2幅图像,然后第3幅、第4幅……依此类推,人眼看上去就象是屏幕上的图像在“动”。但这样的动画难免会出现闪烁,这样的效果并不是我们想要的。现在大家了解一下DirectDraw是如何实现动画效果的。DirectDraw为我们准备了两张页面,一张是前台页面,另一张称为后台页面。大家在屏幕上看到的永远只是前台页面,而后台页面是不可见的。实现动画的原理是:先在后台页面画图像,然后把后台页面和前台页面进行交换,即原来的前台页面成了后台页面,原来的后台页面成了前台页面,这样在原来的后台页面画的图像就会显示在屏幕上。然后又在现在