用DELPHI开发DirectX游戏

用DELPHI开发DirectX游戏,第1张

这不是一篇关于DirectX的详细教程 而是讲解如何用DELPHI开发DirectX游戏 因为不管是网上或是书店 关于DirectX的书基本上是用C++或VC描述的 用DELPHI开发游戏的资料是少之又少 这篇文章的目的就是让读者能够学会如何利用已有的资料学习来开发游戏 这篇文章面向的是对DirectX有一定了解 却不知道如何在DELPHI下开发DirectX游戏的读者 推荐参考资料:<<游戏编程指南>><<DirectX中文收册>> 一 DELPHI能不能开发游戏? 回答是当然 网上很多游戏论坛有不少人都认为开发游戏只能用C++或VC DELPHI只适合来做做桌面应用 劝有这些观点的人先反汇编看看DELPHI和VC编释出来的代码 或是看看 奇迹时代 这个游戏 奇迹时代 就是用DELPHI开发的 速度和画面优于帝国时代 DELPHI是完全面向对象 并能内嵌汇编 支持MMX指令(DELPHI中MMX寄存器为mm mm ) 完全适合游戏开发的需要 其实不论VC DELPHI都只是工具 只要内功好都能做出来好的程序或是游戏 二 准备工作 目前用DELPHI开发DirectX游戏有二种选择 一是使用jedi的DirectX声明(// delphi jedi ) 另一种是使用DelphiX控件 在这里我们准备使用jedi的DirectX声明包来开发DirectX游戏 之所以选择DirectX声明包 是因为这样是以SDK方式来开发游戏 以后如果需要转到其它语言也不必重新学习DirectX 至于DelphiX控件我没用过 没发言权 不过偶是不用日货的 )先到以下地址下载DirectX的声明包(//kuga net/download/files/directx rar) 并解压到你自定的目录中 再在DELPHI中选择Tools >Environment Options 在打开的窗口中选择Library选项卡 点击Library Path后面的按钮 会d出来一个Directories窗口 再点击Greyed items denote invalid path右边的按钮 选择DirectX声明解压到的目录 再点击ADD按钮 这样就把DirectX声明所在的目录添加到了DELPHI 的Library路径中 就可以直接在uses中引用DirectX声明中的单元了 这个声明包里自带了几个例子 可以作为入门的参考 三 调试经验 开发全屏游戏时最好把设计时的屏幕分辩率设为和游戏一样的分辩率 以免调试时频繁切换分辩率而损伤屏幕 开发全屏游戏最好是在WIN /XP下 不然在 下调试时游戏进入死循环或产生异常时 机子很容易就会当掉 在 /XP下全屏游戏进入死循环时可以按ALT+TAB切换到DELPHI中(但这时由于DirectX游戏是全屏 独占了屏幕 屏幕上不会有变化 所以要多试几次) 按CTRL+F 就可以结束游戏 如果是异常的话 切换到DELPHI中先按下回车再按CTRL+F 就可以结束调试游戏了 注意:如果你是使用DELPHI 的话 请把DirectDraw pas中的 行{$IFDEF VER }改为{$IFDEF VER }才能正常编释 最好使用API的方式来建立游戏主窗口而不是使用VCL的TFORM类 先让我们来看看用C++和DELPHI初始化DirectDraw对像的代码段 c++版:BOOL InitDDraw( ){LPDIRECTDRAW lpDD// DirectDraw对象的指针if ( DirectDrawCreateEx (NULL (void **)&lpDD IID_IDirectDraw NULL) != DD_OK )return FALSE{创建DirectDraw对象}{这里使用了 if ( xxx != DD_OK) 的方法进行错误检测 这是最常用的方法}if (lpDD >SetCooperativeLevel(hwnd DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK ) return FALSE{设置DirectDraw控制级}if ( lpDD >SetDisplayMode( DDSDM_STANDARDVGAMODE ) != DD_OK ) return FALSE{置显示模式}}DELPHI版:function TForm InitDirectDraw: BooleanvarlpDD: IDirectDraw beginResult := False{先假设初始化失败}{建立DirectDraw对象}if DirectDrawCreateEx(nil lpDD IID_IDIRECTDRAW nil) <>DD_OK thenexit{设定DirectDraw的控制级 第一个参数为DirectDraw窗口的句柄 这里把控级级设为全屏加独占模式}if lpDD SetCooperativeLevel(Hwnd DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN) <>DD_OK thenexit{设定显示模式 第一 二个参数为分辩率大小 第三个参数用来设置显示模式的颜色位数 第四个参数设定屏幕的刷新率 为默认值 第四个参数唯一有效的值只有DDSDM_STANDARDVGAMODE}if lpDD SetDisplayMode( DDSDM_STANDARDVGAMODE) <>DD_OK thenexitResult := Trueend可以看出来 这二段代码除了语法和对象名外完全一样 只要了解了这点 我们完全可以参考VC或C++的资料 然后用DELPHI做出自己的游戏了 DELPHI中DirectX声明中的对象名 结构名和VC不一样 一般的对应关系如下: DELPHI  VCDirectDraw对象 IDirectDraw  LPDIRECTDRAW 页面对象  IDirectDrawSurface  LPDIRECTDRAWSURFACE DirectDraw的页面描述  TDDSurfaceDesc  DDSURFACEDESC 基本上只是前缀不一样 由于篇幅 这儿就不一一列出所有对像和结构了 lishixinzhi/Article/program/Delphi/201311/25022

如果想DirectX游戏编程,而又有很多不清楚的问题,那请看这个:

1、 语言编程:c/c++;

2、 编程基础一定要好:数据结构,c/c++语言;

2、 IDE集中开发环境:visual studio .net 2003;

3 、游戏开发SDK用DirectX9;

4、 Win32 api开始的时候不能学的太多;

5、 可以不用MFC(如果c++基础好,MFC学起来很简单);

6、 编网络游戏,使用winsock,通讯协议用TCP;

7、 多下载源代码,观看之;

8、 数学上的要求(其它基础文化课类似):不需要了解算法的来历、推导等,但一定要知道它们是干什么用的以及如何用;

9、 学习STL,必须C++要过关,否则会很难学。首先要学会如何用STL,再想深入的话,学习STL的内部代码。STL首先从list,vector学起。

分类: 电脑/网络 >> *** 作系统/系统故障

问题描述:

我安装后有好多的压缩文件,不知道是什么东西.

解析:

DirectX是一种接口方式,常见的有DirectX和OPENGL,一般的程序员只需要遵照相应的规范

就可以完成程序的开发而不需要分别为不同的硬件提供不同的程序,解释起来比较麻烦,下

面的文字是微软的官方解释:

Windows 支持 DirectX 8.0,它能增强计算机的多媒体功能。使用 DirectX 可访问显卡

与声卡的功能,从而使程序可提供逼真的三维 (3D) 图形与令人如醉如痴的音乐与声音效果

。DirectX 是一组低级“应用程序编程接口 (API)”,可为 Windows 程序提供高性能的硬件

加速多媒体支持。

DirectX 使程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程

序使得多媒体软件程序能够在基于 Windows 的具有 DirectX 兼容硬件与驱动程序的计算机

上运行,同时可确保多媒体程序能够充分利用高性能硬件。

DirectX 包含一组 API,通过它能访问高性能硬件的高级功能,如三维图形加速芯片和

声卡。这些 API 控制低级功能(其中包括二维 (2D) 图形加速)、支持输入设备(如游戏杆

、键盘和鼠标)并控制着混音及声音输出。构成 DirectX 的下列组件支持低级功能:

Microsoft DirectDraw

Microsoft DirectDraw API 支持快速访问计算机视频适配器的加速硬件功能。它支持在

所有视频适配器上显示图形的标准方法,并且使用加速驱动程序时可以更快更直接地访问。

DirectDraw 为程序(如游戏和二维图形程序包)以及 Windows 系统组件(如数字视频编解

码器)提供了一种独立于设备之外的方法来访问特定显示设备的功能,而不要求用户提供设

备功能的其它信息。

Microsoft Direct3D

Microsoft Direct3D API (Direct3D) 为大多数新视频适配器内置的 3-D 调色功能提供

界面。Direct3D 是一种低级的 3-D API,它为软件程序提供一种独立于设备之外的方法以便

与加速硬件进行有效而强大的通信。Direct3D 包含专用 CPU 指令集支持,从而可为新型

计算机提供进一步加速支持。

Microsoft DirectSound

Microsoft DirectSound API 为程序和音频适配器的混音、声音播放和声音捕获功能之

间提供了链接。DirectSound 为多媒体软件程序提供低延迟混合、硬件加速以及直接访问声

音设备等功能。维护与现有设备驱动程序的兼容性时提供该功能。

Microsoft DirectMusic

Microsoft DirectMusic API 是 DirectX 的交互式音频组件。与捕获和播放数字声音样

本的 DirectSound API 不同,DirectMusic 处理数字音频以及基于消息的音乐数据,这些数

据是通过声卡或其内置的软件合成器转换成数字音频的。DirectMusic API 支持以“乐器数

字界面 (MIDI)”格式进行输入,也支持压缩与未压缩的数字音频格式。DirectMusic 为软件

开发人员提供了创建令人陶醉的动态音轨的能力,以响应软件环境中的各种更改,而不只是

用户直接输入更改。

Microsoft DirectInput

Microsoft DirectInput API 为游戏提供高级输入功能并能处理游戏杆以及包括鼠标、

键盘和强力反馈游戏控制器在内的其它相关设备的输入。

Microsoft DirectPlay

Microsoft DirectPlay API 支持通过调制解调器、Inter 或局域网连接游戏。Dire

ctPlay 简化了对通信服务的访问,并提供了一种能够使游戏彼此通信的方法而不受协议或联

机服务的限制。DirectPlay 提供了多种游说服务,可简化多媒体播放器游戏的初始化,同时

还支持可靠的通信协议以确保重要游戏数据在网络上不会丢失。DirectPlay 8.0 的新功能即

支持通过网络进行语音通信,从而可大大提高基于多媒体播放器小组的游戏的娱乐性,同时

该组件还通过提供与玩游戏的其他人对话的功能而使团体游戏更具魅力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11542919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存