VisualC#编写3D游戏框架示例

VisualC#编写3D游戏框架示例,第1张

VisualC#编写3D游戏框架示例,第2张

你可能已经期待实际编写游戏代码很久了。由于2004年夏天的DirectX SDK更新包含了一个坚实的示例框架组件,并且它被设计成可以直接在你自己的代码中使用,它还为你处理了大量的事务,所以你只要简单地使用它就可以节省大量的时间和精力。

本文中的示例使用了这个示例框架组件。在本文中,您将了解以下内容:

如何建立自己的项目

如何使用示例框架组件来枚举设备

建立项目

在本文中,我假设您的所有开发工作都将使用Visual Studio完成。net 2003。如果您不想使用这种环境,可以使用命令行来编译代码,这允许您使用任何文本编辑器或集成开发环境(IDE)。

启动Visual Studio。NET 2003,然后单击起始页中的“新建项目”按钮。如果不使用起始页,可以单击“文件”菜单下“新建”子菜单中的“项目”菜单项,或者使用Ctrl+Shift+N,在“Visual C#项目”区域选择“Windows项目”数据项。将这个项目命名为Blockers,这是这个游戏的名字。

在查看自动生成的代码之前,首先将示例框架组件添加到项目中。通常情况下,我会在“解决方案浏览器”中新建一个文件夹,将这些文件放在一个单独的文件夹中(这个文件夹的名称是Framework)。右键单击新创建的文件夹,并从“添加”菜单中选择“添加现有项目”。导航到DirectX SDK文件夹,您会发现示例框架文件位于Samples\Managed\Common文件夹中。选择每个文件并将其添加到您的项目中。

将示例框架组件添加到项目中后,您可以移除自动生成的代码。这些代码大多用于构建独特的Windows窗体应用程序。所以,和我们写游戏的代码没有任何关系。用清单1中的代码替换现有的代码和类(Form1)。

列表1的框架组件:空

使用系统;
使用系统。配置;
使用Microsoft。DirectX
使用Microsoft。DirectX . Direct3D
使用Microsoft。samples . DirectX . utility toolkit;

类游戏引擎:idevicecreation
{
//程序入口。初始化所有部分,并进入消息处理循环。用空free time
static int main()
{
using(framework sample framework = new framework())
{
return sample framework . exit code;
}
}
}

这部新法典有三个突出的地方。首先,你可能会注意到,除了静态的main方法,其他的都被删除了,main方法也被修改了。其余代码是Windows窗体设计器的支持代码。因为这个应用不需要使用这个设计器,所以这些代码没用,可以删除。其次,这个代码无法编译是因为游戏引擎要实现的两个接口还没有实现。同样,这段代码实际上什么也不做。

在你开始解决后两个问题之前,你必须添加一些引用。因为您将在此项目中显示奇怪的3D图像,所以您必须向项目中添加对可以执行此类显示操作的组件的引用。本文使用受控DirectX来执行此操作,因此需要在“项目”菜单中选择“添加引用”。图1显示了弹出对话框。

如果您在2004年夏天安装DirectX 9 SDK更新,您会发现有多个版本的受控DirectX组件可用。请选择最新版本(版本1.0.2902.0)。对于此项目,您需要添加三个不同的组件引用:

微软。标准材质

微软。DirectX.Direct3D

微软。DirectX.Direct3DX

DirectX根组件包含辅助显示计算的数学结构。另外两个组件对应包含Direct3D和D3DX的功能。添加这些引用后,您可以简单地检查清单1中添加的using语句,以确保名称空被正确引用。这一步确保您不需要完全限定类型。例如,如果不添加using语句,则必须使用以下语句来声明Direct3D设备变量:

微软。DirectX . direct 3d . device device = null;

Using语句可以减少很多输入(没有人愿意在声明一个变量的时候输入所有的内容)。因为已经添加了using语句,所以可以使用如下所示的声明语句:

私有设备device = null

如你所见,用这种方式声明变量要容易得多,节省了大量的输入。了解这些信息后,就可以开始修复应用编译过程中的错误,准备编写第一个3D游戏了。您现在必须实现的一个接口是IDeviceCreation,它控制设备的枚举和建立。

你可能会想,“你列出设备是为了什么?我只有一个监视器!虽然一般都是这样,但是现在的显卡其实是支持多显示器的。即使你只有一个设备,你仍然有多种模式可供选择。显示器的格式可能不同(在Windows桌面设置中可以看到这几种,比如16位色和32位色)。全屏模式下的高度和宽度也可能有不同的值,你甚至可以控制屏幕的刷新率。总而言之,还有一些事情需要解决。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VisualC#编写3D游戏框架示例

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情