整理C编写3D游戏框架示例Word格式文档下载.docx

上传人:b****1 文档编号:14011665 上传时间:2022-10-16 格式:DOCX 页数:14 大小:222.70KB
下载 相关 举报
整理C编写3D游戏框架示例Word格式文档下载.docx_第1页
第1页 / 共14页
整理C编写3D游戏框架示例Word格式文档下载.docx_第2页
第2页 / 共14页
整理C编写3D游戏框架示例Word格式文档下载.docx_第3页
第3页 / 共14页
整理C编写3D游戏框架示例Word格式文档下载.docx_第4页
第4页 / 共14页
整理C编写3D游戏框架示例Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

整理C编写3D游戏框架示例Word格式文档下载.docx

《整理C编写3D游戏框架示例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《整理C编写3D游戏框架示例Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

整理C编写3D游戏框架示例Word格式文档下载.docx

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

  建立项目

  在本文中,我假定你的所有开发工作都将使用VisualStudio.NET2003来完成。

如果你不希望使用这个环境,可以使用命令行编译代码,它允许你使用任意的文本编辑器或集成开发环境(IDE)。

  启动VisualStudio.NET2003并点击起始页面中的"

新建项目"

按钮。

如果你没有使用起始页面,可以点击"

文件"

菜单下的"

新建"

子菜单中的"

项目"

菜单项,或者使用Ctrl+Shift+N。

选择"

VisualC#项目"

区域中的"

Windows项目"

数据项。

把这个项目命名为Blockers,这是游戏的名称。

  在你查看自动生成的代码之前,首先把示例框架组件添加到你的项目中。

一般情况下,我会在"

解决方案浏览器"

中建立一个新文件夹,并把这些文件放入一个这个独立的文件夹中(把这个文件夹的名字取为Framework)。

右键点击这个新建的文件夹,从"

添加"

菜单中选择"

添加已有的项"

导航到DirectXSDK文件夹,你会发现该示例框架文件位于Samples\Managed\Common文件夹中,选择每个文件并添加到你的项目中。

  在示例框架组件被添加到项目中以后,你就可以去掉自动生成的代码了。

这些代码中的大部分都是用于建立别致的Windows窗体应用程序的,因此,它与我们编写游戏的代码是无关的。

用列表1中的代码替换已有的代码和类(Form1)。

  列表1:

空的框架组件

(4)根据评价的目的、要求和评价对象的特点、工艺、功能或活动分布,选择科学、合理、适用的定性、定量评价方法对危险、有害因素导致事故发生的可能性及其严重程度进行评价。

usingSystem;

usingSystem.Configuration;

usingMicrosoft.DirectX;

usingMicrosoft.DirectX.Direct3D;

usingMicrosoft.Samples.DirectX.UtilityToolkit;

publicclassGameEngine:

IDeviceCreation

{

 ///程序入口。

初始化所有部分并进入一个消息处理循环。

用空闲时间显示场景

 staticintMain()

 {

  using(FrameworksampleFramework=newFramework())

  {

   returnsampleFramework.ExitCode;

  }

 }

}

1.建设项目环境影响评价分类管理的原则规定

  这段新代码中有三个地方比较突出。

首先,你可能注意到了除了静态的main方法之外,删除了所有东西,而且main方法也被修改过。

剩余的代码是Windows窗体设计器的支撑代码。

由于这个应用程序不需要使用该设计器,因此这些代码就没有用了,可以被删除。

其次,这段代码不能编译,因为游戏引擎希望实现的两个接口还未实现。

再次,这段代码实际上没有做任何事务。

  在你开始解决后面两个问题之前,你必须添加一些引用。

由于你准备在这个项目中显示奇特的3D图像,你就必须给项目添加能执行这样的显示操作的组件的引用。

本文采用受控DirectX来执行这种操作,因此你需要在"

添加引用"

图1显示了弹出的对话框。

图1:

添加引用对话框

  如果你安装了DirectX9SDK2004年夏季更新,你会发现有多个版本的受控DirectX组件可供使用。

请选择最新的版本(1.0.2902.0版本)。

对于这个项目来说,你需要添加三个不同的组件引用:

Microsoft.DirectX

Microsoft.DirectX.Direct3D

Microsoft.DirectX.Direct3DX

  DirectX根(root)组件包含了辅助显示计算的数学结构。

其它两个组件相应地包含了Direct3D和D3DX的功能。

添加这些引用之后,你可以简单地查看一下列表1中添加的using语句,以确保名字空间被正确地引用了。

这个步骤可以确保你不需要完整地限定类型。

例如,如果不添加using语句,那么声明一个Direct3D设备变量,就必须使用下面的语句:

Microsoft.DirectX.Direct3D.Devicedevice=null;

(2)辨识和分析评价对象可能存在的各种危险、有害因素,分析危险、有害因素发生作用的途径及其变化规律。

  Using语句可以减少很多输入内容(没有人希望在声明一个变量时输入全部的内容)。

由于你已经增加了using语句,就可以使用如下所示的声明语句了:

 

安全预评价方法可分为定性评价方法和定量评价方法。

价值=支付意愿=市场价格×

消费量+消费者剩余privateDevicedevice=null;

  你可以看到,用这种方式声明变量简单多了,节省了大量的输入。

在了解这些信息之后,你可以开始修补应用程序编译过程中的错误了,并准备好编写第一个3D游戏了。

你现在必须实现的唯一一个接口是IDeviceCreation,它控制着设备的列举和建立。

  你可能会想"

列举设备做什么?

我只有一个监视器"

尽管一般情况下是这样的,但是现在的显卡实际上是支持多个监视器的,即使你只有一个设备,你仍然拥有多个可选择的模式。

显示器的格式可能不同(你可以在Windows桌面设置中看到这些种类,例如16位色和32位色)。

全屏幕模式下的高度和宽度也可能有不同的值,你甚至于还可以控制屏幕的刷新率。

总而言之,还是有些事情需要解决。

  列表2中的代码修补的应用程序中的编译错误。

  列表2:

实现接口

///设备初始化的时候调用。

这段代码检查设备最小的性能,

///如果没有通过检查,就返回false

publicboolIsDeviceAcceptable(Capscaps,FormatadapterFormat,

FormatbackBufferFormat,boolwindowed)

 if(!

Manager.CheckDeviceFormat(caps.AdapterOrdinal,caps.DeviceType,

   adapterFormat,Usage.QueryPostPixelShaderBlending,

   ResourceType.Textures,backBufferFormat))

  returnfalse;

 if(caps.MaxActiveLights==0)

 returntrue;

///在建立某个设备之前,这个回调函数会被立即调用,以允许应用程序修改设备的

///设置信息。

它提供的设置参数包含了框架组件为新设备挑选的设置,并且应用程序

///可以直接对这个结构进行任何需要的修改。

请注意,示例框架没有纠正无效的

///设备设置信息,因此必须小心地返回有效的设备设置,否则建立设备就会失败。

publicvoidModifyDeviceSettings(DeviceSettingssettings,Capscaps)

 //这个应用程序没有使用任何get方法,它被设计成在一个纯设备上工作。

 //因此如果受到支持并且使用HWVP,就建立一个纯设备。

 if((caps.DeviceCaps.SupportsPureDevice)&

&

((settings.BehaviorFlags&

CreateFlags.HardwareVertexProcessing)!

=0))

  settings.BehaviorFlags|=CreateFlags.PureDevice;

  请你查看一下声明的IsDeviceAcceptable方法。

在示例框架忙着枚举系统中的设备的时候,它会在每个找到的组合上调用该方法。

注意到该方法返回一个布尔型值吗?

这使得你有权利告诉示例框架你认为某个设备是否符合需求。

但是,在你仔细查看第一个方法中的代码的时候,请先看一下声明的第二个方法(ModifyDeviceSettings)。

某个设备被建立之前,示例框架会立即调用这个方法,允许你加入任何希望的选项。

但是你要小心地使用参数选项,因为它可能导致设备建立失败。

  现在我们回到第一个方法:

我们先看一下它的参数。

首先,它带有一个Caps类型的参数,它是设备性能的简单结构体。

该结构体包含了具体设备的巨量信息,可以帮助你决定某个类型是不是你正在使用的设备类型。

其后的两个参数都是特定设备的格式参数:

一个是后台的缓冲区格式,另一个是设备的格式。

  请注意

  后台缓冲区是实际要显示的数据(象素)在发送给显卡处理并输出到屏幕之前所存储的地方。

后台缓冲区的格式决定了可以显示多少种色彩。

大多数格式遵循特定的命名习惯--每个字符跟着一个数字,例如A8R8G8B8。

字符所指定的构成部分拥有与其后面的数字相同数量的位(bit)。

在A8R8G8B8中,该格式可以包含32位色彩信息,alpha、red、green和blue各用8位。

最常见的构成是:

  AAlpha

  RRed

  GGreen

  BBlue

  XUnused

  你可以查看DirectXSDK文档得到更多关于格式的信息。

由于我们还需要知道该设备时候可以显示在窗体中,所以这个方法还有一个参数(最后一个)。

尽管大多数游戏都运行在全屏模式下,但是编写和调试在全屏模式下运行的游戏却很困难。

在调试过程中,这个应用程序在窗体模式而不是全屏模式下显示。

  窗体模式是我们运行的大多数应用程序的显示方式。

其中大多数应用程序带有边框和控制菜单,右上角带有最小化、最大化和关闭按钮。

在全屏模式下,应用程序覆盖了整个屏幕,并且在大多数情况下没有边框。

如果全屏模式使用了另外的屏幕大小(你当前使用的桌面),你可以改变桌面的分辨率。

  你可能注意到了默认行为是接受该设备,但是在接受之前进行了两项检查。

第一项检查确保了传递进来的设备可以进行alpha混合(游戏的用户界面需要这个),如果它不能够实现,就返回false表明这个设备不能被接受。

接着,它检查是否支持活动光源(activelight)的能力。

没有光源的屏幕看起来是平面的、是假的,因此一般至

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1