工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 技术跟踪 > 技术理论 > 正文
游戏开发新手入门之DirectX入门
[文章信息]
作者:ant3000
时间:2005-03-10
出处:编程论坛
责任编辑:方舟
[文章导读]
今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台
advertisement
专题教程宝典
【软件应用】
【办公软件】
【图形图像】
【网页制作】
【操作系统】
【网络安全】
【程序开发】
【日报周刊】
【多媒体教程】
· 天极软件应用多媒体教程
· 软件消费服务信息指南
· EJB 3.0 开发指南
· 软件盗版与反盗版之战
· 图解PS按比例自动批量裁剪照片
· Windows开机关机故障分析及排除
· Visual FoxPro9.0构建管理系统图解
· 体验面对面的网络视频通讯
· 对付网页恶意代码
· Word动画教程:表格操作全接触
[正文]

1 2 3  下一页

  ☆ 简介

  今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张)。当然了,它是巨大的,需要好几本书才能含盖它的全部。先不要去担心我在这里所教给你之外的数不清的知识,毕竟我把你推到了起跑线上。

  阅读本章,你需要前几章的知识和C语言的知识,由于我们还要谈到组件对象模型(COM),它是面向对象系统的基础,你最好还要有一点儿C++的知识。没有也不太要紧,我在讲到这处时会照顾你的。反正你记住,使用DirectX并不需要多少C++的知识。开始吧!

  ☆ 什么是DirectX?

  DirectX是游戏制作者的API(Application Development Interface)。它是一组允许你直接控制计算机硬件设备的软件。如果你的硬件支持DirectX,并且你用硬件加速你的程序,这就意味着一个字——快。不用担心你的硬件知识,你不会真正的接触到它们。我们是通过硬件抽象层(HAL)和硬件仿真层(HEL)来保证设备无关性和让你的程序正常运行。

  DirectX由很多组件构成,每一个都有特定的用途。组件DirectDraw是最为重要的一个,因为所有的图形都要用到它,它是2D图形的引擎,3D图形也同样离不开它。DirectDraw是我们今天就要说的。其它的组件是:

  ▲ DirectSound:提供硬件和软件的声音混合与回放。

  ▲ DirectMusic:处理基于消息的音乐数据。它支持乐器数字接口(MIDI)并为创建交互式音乐提供创作工具。

  ▲ DirectPlay:使得通过调制解调器链接或通过网络来与应用程序相连成为可能。

  ▲ Direct3D:是一个三维图形包,它提供一个高级的保留模式(Retained Mode)接口,这使得你能够实现一个完整的三维图形系统。它还包含一个低级的即时模式(Immediate Mode)接口,使得应用程序获得对渲染管线的完全控制。

  ▲ DirectInput:为包括游戏杆、鼠标、键盘和游戏控制器在内的输入设备提供支持。它还为反馈游戏设备提供支持。

  ▲ DirectSetup:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。

  ▲ AutoPlay:让你能够制作一张一旦插入驱动器就能自动安装的光盘。AutoPlay并非DirectX所独有,因为它是Microsoft Win32 API的一部分。

  组件对象模型(COM)是DirectX的基础,有一些技巧建立COM对象——别问我怎么做——但你知道一点点还是有好处的。我只是简单说一下,如果你有兴趣,具体的细节就自己查资料吧!可能下一节你有些困惑,但不要紧,我所说的你不用太明白,毕竟我们的目的是使用COM对象,这可比创建容易多了。

  ☆ 组件对象模型(COM)

  COM接口是DirectX技术的基础,没有COM就没有DirectX。(不用担心,你只需要对COM技术有一个粗浅的了解就可以使用DirectX——只要你在编写DirectX应用程序时遵循一定的步骤,甚至都可以在不了解COM的情况下使用DirectX。

  DirectX的大多数API都是基于COM结构的。COM为软件模块化和软件重用提供了最坚实的基础,它的最重要的概念就是接口(interface),接口是软件重用的最基本方法。更专业的说,接口是一系列操作的规范描述,即接口规范。

  所有的COM接口都是从Iunknown接口继承而来的,IUnknown接口是所有COM接口的根。IUnknown接口具有3个方法:

  · QueryInterface():此方法查询新接口,并在新接口存在时返回之。

  · AddRef():此方法在接口或其它应用程序连编到此COM对象上时将引用计数值递加1。

  · Release():此方法将COM对象的引用计数递减1。当引用计数递减到0时,该COM对象自动释放。

  所有COM对象都具有这三个方法。虽然DirectX应用程序一般不需要考虑引用计数的问题,但引用计数确实是存在的,它已经由DirectX自动完成了。我们所要做的,就是创建DirectX对象,然后在使用完毕后调用Release方法释放引用。

  ☆ 设置

  用DirectX创建程序,你需要有三件主要的事要做。第一件事是COM对象本身,它们包含在.DLL文件里,这些.DLL文件需要在Windows里注册,这在安装DirectX软件包时已经完成了。这些对象是我们创建DirectX应用程序时用到的接口,例如IdirectDraw。但这还不够,因为在COM层上直接使用DirectX是令人沮丧的和乏味的。我们希望有更容易的办法解决它。利用静态库(.LIB文件)是个好办法,它是DirectX软件包的一部分,你可以从Microsoft免费获得。它有一个“打包”函数使你工作更轻松。使用DirectX的不同组件,你需要链接不同的静态库。例如你要使用DirectDraw组件,你就需要ddraw.lib。

  最后,你还需要DrectX头文件,它包含函数原形、宏、常量和你需要用到的各种类型。对于DirectDraw,这个头文件是ddraw.h。
要确认你使用了正确的文件版本,你还得让编译器包含软件开发包的目录。具体的做法是:

  首先点击Tool菜单,选择Options,然后点击Directories,在Show Directories for 组合框下拉菜单中选择Include files,增加一个新的目录。将你的DirectX的路径填入。(例如:C:DXSDKinclude)然后将它移到列表的第一位,使编译时第一个寻找它(防止寻找老版本)。然后选择Show Directories for组合框下拉菜单中的Library files,方法同前,只是把include改成lib。现在,你已经设置完了DirectX。你仍然需要手动增加一些库文件到你的项目中,但先不急,我将在以后讲它。我们将使用DirectX 7.0。

  ☆ DirectX版本号

  你可能认为版本号没有什么好讲的,但我们确实要说一说。Microsoft在DirectX里创建了令人难以置信的科技,但它并不代表不使人迷惑。对于每一个DirectX版本,并不是所有的接口都一次次的升级。因此,尽管DirectX有了7个版本(我写文章时DirectX8.0正准备发布),但DirectDraw并没有7个版本。当DirectX6是最新版本时,DirectDraw的最新接口版本是IDirectDraw4,不是IDirectDraw6。现在最新的版本是DirectX7,所以我们要用IDrectDraw7。很奇怪,是不是?我想你已经明白了我的意思,请不用因为以后看到的感到困惑了。

  最后一件事。当我写这篇文章时,DirectX7是最新的可用版本,但或许现在你已经有了DirectX8,并且或许你还听说了,DirectDraw将不再升级了,取代它的是DirectX Graphics,这是一个功能强大的图形API。但DirectDraw不升级就意味着我们不学习它了,毕竟都离不开COM。如果你想用DirectX8的接口写2D的游戏,你需要用3D方法去创建2D观点。听起来很棒,是的,的确如此,因为使用3D接口将给你更多的硬件支持,例如阿尔发混合。但这也恰恰是个问题,如果机器没有相应的硬件设备,程序会以更慢的速度运行。

  DirectDraw是很容易学的。由于DirectX中的3D图形是基于DirectDraw的,3D应用程序在DirectDraw环境中执行;极少有应用程序专门使用3D。大多数程序使用3D函数对一些对象建模,而另一些对象,诸如背景和精灵,是以2D图形渲染的。所以本系列将使用DirectDraw。关于DirectX8,我还没有太多的了解,因此我只能对DirecX7做详细介绍。总的来说,你使用DirectX,还是离不开DirectDraw的。


1 2 3  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 液晶显示器业出新政 部分原材料免征进口关税
  • 国产软件面对印度“软件蓝领”模式左右为难
  • EVD每碟最高卖5元 EVD数字院线将全面开放
  • 8848遭4起连环起诉 混战意在分食中文搜索
  • 联想收购IBM个人电脑业务通过美国政府审查
  • 雅虎与MSN将在搜索广告业务上分道扬镳
  • 首位网络博客进入白宫 准备工作花了一周
  • 国产手机直供风波调查 零售商空手套白狼
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索