好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

游戏软件开发.ppt

52页
  • 卖家[上传人]:pu****.1
  • 文档编号:586210702
  • 上传时间:2024-09-04
  • 文档格式:PPT
  • 文档大小:855.50KB
  • / 52 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第一章 DirectX简介一、什么是DirectX DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口由C++编程语言实现,遵循COM被广泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360电子游戏开发,并且只能支持这些平台最新版本为DirectX 11.1,创建在最新的Windows 8上 第一章 DirectX简介二、功能 DirectXDirectX加强加强3D3D图形和声音效果,并提供设计图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低了为每一品牌的硬件来写不同的驱动程序,也降低了用户安装及设置硬件的复杂度用户安装及设置硬件的复杂度从字面意义上说,从字面意义上说,DirectDirect就是直接的意思,而后边就是直接的意思,而后边的的X X则代表了很多的意思,从这一点上可以看出则代表了很多的意思,从这一点上可以看出DirectXDirectX的出现就是为了为众多软件提供直接服务的出现就是为了为众多软件提供直接服务的。

      的 第一章 DirectX简介三、组成 DirectXDirectX是由很多是由很多APIAPI组成的,按照性质分类,组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部可以分为四大部分,显示部分、声音部分、输入部分和网络部分分和网络部分 第一章 DirectX简介三、组成 1 1、显示部分、显示部分 显示部分担任图形处理的关键,分为显示部分担任图形处理的关键,分为DirectDrawDirectDraw((DDrawDDraw)和)和Direct3DDirect3D((D3DD3D),前者),前者主要负责主要负责2D2D图像加速它包括很多方面:我们播图像加速它包括很多方面:我们播放放mpgmpg、、DVDDVD电影、看图、玩小游戏等等都是用的电影、看图、玩小游戏等等都是用的DDrawDDraw,你可以把它理解成所有划线的部分都是用,你可以把它理解成所有划线的部分都是用的的DDrawDDraw后者则主要负责后者则主要负责3D3D效果的显示,比如效果的显示,比如CSCS中的场景和人物、中的场景和人物、FIFAFIFA中的人物等等,都是使用中的人物等等,都是使用了了DirectXDirectX的的Direct3DDirect3D 第一章 DirectX简介三、组成 1 1、显示部分、显示部分 第一章 DirectX简介三、组成 2 2、、声音部分声音部分 声音部分中最主要的声音部分中最主要的APIAPI是是DirectSoundDirectSound,除了播放声音和处理,除了播放声音和处理混音之外,还加强了混音之外,还加强了3d3d音效,并提供了录音功能。

      音效,并提供了录音功能 第一章 DirectX简介三、组成 3 3、输入部分、输入部分 输入部分输入部分DirectInputDirectInput可以支持很多的游戏输入可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部设备,它能够让这些设备充分发挥最佳状态和全部功能除了键盘和鼠标之外还可以连接手柄、摇杆、功能除了键盘和鼠标之外还可以连接手柄、摇杆、模拟器等模拟器等 第一章 DirectX简介三、组成 4 4、网络部分、网络部分 网络部分网络部分DirectPlayDirectPlay主要就是为了具有网络功主要就是为了具有网络功能游戏而开发的,提供了多种连接方式,能游戏而开发的,提供了多种连接方式,TCP/IPTCP/IP,,IPXIPX,,ModemModem,串口等等,让玩家可以用各种连,串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保网方式来进行对战,此外也提供网络对话功能及保密措施 第一章 DirectX简介三、历史1 1、、DirectX 1.0DirectX 1.0第一代的第一代的DirectXDirectX很不成功,推出时众多的硬件均不支持,当时基本很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形都采用专业图形APIAPI--OpenGLOpenGL,缺乏硬件的支持成了其流行的最大,缺乏硬件的支持成了其流行的最大障碍。

      障碍2 2、、DirectX 2.0DirectX 2.0DirectX 2.0DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采在二维图形方面做了些改进,增加了一些动态效果,采用了用了Direct 3DDirect 3D的技术这样的技术这样DirectX 2.0DirectX 2.0与与DirectX 1.0DirectX 1.0有了相当大的有了相当大的不同在DirectX 2.0DirectX 2.0中,采用了中,采用了“ “平滑模拟和平滑模拟和RGBRGB模拟模拟” ”两种模拟两种模拟方式对三维方式对三维(3D)(3D)图像进行加速计算的图像进行加速计算的DirectX 2.0DirectX 2.0同时也采用了更同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题从加友好的用户设置程序并更正了应用程序接口的许多问题从DirectX 2.0DirectX 2.0开始,整个开始,整个DirectXDirectX的设计架构雏形就已基本完成的设计架构雏形就已基本完成 第一章 DirectX简介三、历史 DirectX 3.0DirectX 3.0的推出是在的推出是在19971997年最后一个版本的年最后一个版本的Windows95Windows95发布发布后不久,此时后不久,此时3D3D游戏开始深入人心,游戏开始深入人心,DirectXDirectX也逐渐得到软硬件厂商也逐渐得到软硬件厂商的认可。

      的认可9797年时应用程序接口标准共有三个,分别是专业的年时应用程序接口标准共有三个,分别是专业的OpenGLOpenGL接口,微软的接口,微软的DirectX DDirectX D接口和接口和3DFX3DFX公司的公司的GlideGlide接口而那接口而那时的时的3DFX3DFX公司是最为强大的显卡制造商,它的公司是最为强大的显卡制造商,它的GlideGlide接口自然也受接口自然也受到最广泛的应用,但随着到最广泛的应用,但随着3DFX3DFX公司的没落,公司的没落,VoodooVoodoo显卡的衰败,显卡的衰败,GlideGlide接口才逐渐消失了接口才逐渐消失了DirectX 3.0DirectX 3.0是是DirectX 2.0DirectX 2.0的简单升级版,它对的简单升级版,它对DirectX 2.0DirectX 2.0的改动并不的改动并不多包括对多包括对DirectSoundDirectSound(针对(针对3D3D声音功能)和声音功能)和DirectPlayDirectPlay(针对游(针对游戏戏/ /网络)的一些修改和升级网络)的一些修改和升级DirectX 3.0DirectX 3.0集成了较简单的集成了较简单的3D3D效果,效果,还不是很成熟。

      还不是很成熟 第一章 DirectX简介三、历史 DirectX 5.0DirectX 5.0微软公司并没有推出微软公司并没有推出DirectX 4.0DirectX 4.0,而是直接推出了,而是直接推出了DirectX 5.0DirectX 5.0此版本对本对Direct3DDirect3D做出了很大的改动,加入了雾化效果、做出了很大的改动,加入了雾化效果、AlphaAlpha混合等混合等3D3D特效,使特效,使3D3D游戏中的空间感和真实感得以增强,还加入了游戏中的空间感和真实感得以增强,还加入了S3S3的的纹理压缩技术纹理压缩技术同时,同时,DirectX 5.0DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备因此,器方面均做了改进,支持了更多的设备因此,DirectXDirectX发展到发展到DirectX 5.0DirectX 5.0才真正走向了成熟此时的才真正走向了成熟此时的DirectXDirectX性能完全不逊色于其性能完全不逊色于其它它3D API3D API,而且大有后来居上之势。

      而且大有后来居上之势 第一章 DirectX简介三、历史 DirectX 6.0DirectX 6.0推出时,其最大的竞争对手之一推出时,其最大的竞争对手之一GlideGlide,已逐步走向了没落,而,已逐步走向了没落,而DirectXDirectX则得到了大则得到了大多数厂商的认可多数厂商的认可DirectX 6.0DirectX 6.0中加入了双线性过滤、中加入了双线性过滤、三线性过滤等优化三线性过滤等优化3D3D图像质量的技术,游戏中的图像质量的技术,游戏中的3D3D技术逐渐走入成熟阶段技术逐渐走入成熟阶段 第一章 DirectX简介三、历史 DirectX 7.0DirectX 7.0最大的特色就是支持最大的特色就是支持T<&L,中文名称是,中文名称是“ “坐标转换坐标转换和光源和光源” ”3D3D游戏中的任何一个物体都有一个坐标,当此物体运动游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;时,它的坐标发生变化,这指的就是坐标转换;3D3D游戏中除了场景游戏中除了场景+ +物体还需要灯光,没有灯光就没有物体还需要灯光,没有灯光就没有3D3D物体的表现,无论是实时物体的表现,无论是实时3D3D游戏还是游戏还是3D3D影像渲染,加上灯光的影像渲染,加上灯光的3D3D渲染是最消耗资源的。

      虽然渲染是最消耗资源的虽然OpenGLOpenGL中已有相关技术,但此前从未在民用级硬件中出现中已有相关技术,但此前从未在民用级硬件中出现在在T<&L问世之前,位置转换和灯光都需要问世之前,位置转换和灯光都需要CPUCPU来计算,来计算,CPUCPU速度越快,速度越快,游戏表现越流畅使用了游戏表现越流畅使用了T<&L功能后,这两种效果的计算用显示卡功能后,这两种效果的计算用显示卡的的GPUGPU来计算,这样就可以把来计算,这样就可以把CPUCPU从繁忙的劳动中解脱出来换句从繁忙的劳动中解脱出来换句话说,拥有话说,拥有T<&L显示卡,使用显示卡,使用DirectX 7.0DirectX 7.0,即使没有高速的,即使没有高速的CPUCPU,同,同样能流畅的跑样能流畅的跑3D3D游戏 第一章 DirectX简介三、历史 DirectX 8.0DirectX 8.0的推出引发了一场显卡革命,它首的推出引发了一场显卡革命,它首次引入了次引入了“ “像素渲染像素渲染” ”概念,同时具备像素渲染引概念,同时具备像素渲染引擎擎(Pixel Shader)(Pixel Shader)与顶点渲染引擎与顶点渲染引擎(Vertex Shader)(Vertex Shader),,反映在特效上就是动态光影效果。

      同硬件反映在特效上就是动态光影效果同硬件T<&L仅仅仅仅实现的固定光影转换相比,实现的固定光影转换相比,VSVS和和PSPS单元的灵活性单元的灵活性更大,它使更大,它使GPUGPU真正成为了可编程的处理器这意真正成为了可编程的处理器这意味着程序员可通过它们实现味着程序员可通过它们实现3D3D场景构建的难度大场景构建的难度大大降低通过大降低通过VSVS和和PSPS的渲染,可以很容易的营造的渲染,可以很容易的营造出真实的水面动态波纹光影效果此时出真实的水面动态波纹光影效果此时DirectXDirectX的的权威地位终于建成权威地位终于建成 第一章 DirectX简介三、历史 DirectX 9.0DirectX 9.020022002年底,微软发布年底,微软发布DirectX9.0DirectX9.0DirectX 9DirectX 9中中PSPS单元的渲染精度已单元的渲染精度已达到浮点精度,传统的硬件达到浮点精度,传统的硬件T<&L单元也被取消全新的单元也被取消全新的VertexShader(VertexShader(顶点着色引擎顶点着色引擎) )编程将比以前复杂得多,新的编程将比以前复杂得多,新的VertexShaderVertexShader标准增加了流程控制,更多的常量,每个程序的着色标准增加了流程控制,更多的常量,每个程序的着色指令增加到了指令增加到了10241024条。

      条PS 2.0PS 2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外多;另外PS1.4PS1.4只能支持只能支持2828个硬件指令,同时操作个硬件指令,同时操作6 6个材质,而个材质,而PS2.0PS2.0却可以支持却可以支持160160个硬件指令,同时操作个硬件指令,同时操作1616个材质数量,新的高精度个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现电影级别的显示效果轻而易举的实现 第一章 DirectX简介三、历史 DirectX 9.0C DirectX 9.0C 与过去的与过去的DirectX 9.0bDirectX 9.0b和和Shader Model 2.0Shader Model 2.0相比较,相比较,DirectX 9.0cDirectX 9.0c最大的改进,便是引入了对最大的改进,便是引入了对Shader Model 3.0(Shader Model 3.0(包括包括Pixel Pixel Shader 3.0 Shader 3.0 和和Vertex Shader 3.0Vertex Shader 3.0两个着色语言规范两个着色语言规范) )的全面支持。

      举的全面支持举例来说,例来说,DirectX 9.0bDirectX 9.0b的的Shader Model 2.0Shader Model 2.0所支持的所支持的Vertex ShaderVertex Shader最最大指令数仅为大指令数仅为256256个,个,Pixel ShaderPixel Shader最大指令数更是只有最大指令数更是只有9696个而在最新的最新的Shader Model 3.0Shader Model 3.0中,中,Vertex ShaderVertex Shader和和Pixel ShaderPixel Shader的最大指的最大指令数都大幅上升至令数都大幅上升至6553565535个,全新的动态程序流控制、位移贴图、个,全新的动态程序流控制、位移贴图、多渲染目标(多渲染目标(MRTMRT)、次表面散射)、次表面散射 Subsurface scatteringSubsurface scattering、柔和阴影、柔和阴影Soft shadowsSoft shadows、环境和地面阴影、环境和地面阴影Environmental and ground shadowsEnvironmental and ground shadows、、全局照明(全局照明(Global illuminationGlobal illumination)等新技术特性,使得)等新技术特性,使得GeForce 6GeForce 6、、GeForce7GeForce7系列以及系列以及Radeon X1000Radeon X1000系列立刻为新一代游戏以及具备无系列立刻为新一代游戏以及具备无比真实感、幻想般的复杂的数字世界和逼真的角色在影视品质的环比真实感、幻想般的复杂的数字世界和逼真的角色在影视品质的环境中活动提供强大动力。

      境中活动提供强大动力 第一章 DirectX简介三、历史 Directx 10.0Directx 10.0已经包含在已经包含在Windows VistaWindows Vista操作系统中,目前无法单独下载使用操作系统中,目前无法单独下载使用新的新的DirectXDirectX使你获得更好的图像显示质量,使多人游戏具可伸缩性,使你获得更好的图像显示质量,使多人游戏具可伸缩性,以及包括更棒的音频效果它强化了针对以及包括更棒的音频效果它强化了针对DirectDrawDirectDraw和和Direct3DDirect3D的的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的做出最佳的3-D3-D角色和环境;点光源式光影和像素式光影使图象更角色和环境;点光源式光影和像素式光影使图象更逼真;强化了逼真;强化了DirectSoundDirectSound和和DirectMusicDirectMusic,简化了其应用扩展;,简化了其应用扩展;DLS2DLS2音频合成功能提高了乐器音频的真实感;音频合成功能提高了乐器音频的真实感;DirectInputDirectInput的设备影的设备影射功能令对设备的支持更简单;射功能令对设备的支持更简单;DirectPlayDirectPlay使多人游戏的性能和可扩使多人游戏的性能和可扩展性得到了提高;展性得到了提高; DirectPlayDirectPlay提供了提供了IPIP声音通讯;声音通讯;DirectShowDirectShow的应的应用编程接口提供了音频用编程接口提供了音频/ /视频的实时合成和即时编辑;视频的实时合成和即时编辑;DirectShowDirectShow支支持持WindowsWindows媒体音频和视频媒体音频和视频(WMA(WMA和和WMV)WMV)的读写;的读写; Microsoft TVMicrosoft TV技技术可以支持数字电视节目。

      术可以支持数字电视节目 第一章 DirectX简介三、历史 Directx 11Directx 1120092009年年1 1月月9 9日星期五,微软将面向公众发布日星期五,微软将面向公众发布Windows 7Windows 7客户端客户端Beta Beta 1 1测试版而此前一天,即测试版而此前一天,即1 1月月8 8日,微软将率先发布日,微软将率先发布Windows 7Windows 7服服务器版本的务器版本的Beta 1Beta 1测试版Windows 7Windows 7是微软的下一代操作系统,当前业内普遍认为,微软将是微软的下一代操作系统,当前业内普遍认为,微软将在在20092009年圣诞购物旺季前发布年圣诞购物旺季前发布Windows 7Windows 7正式版在微软刚刚发布的在微软刚刚发布的Windows 7BetaWindows 7Beta版本中,一些已经安装使用的用版本中,一些已经安装使用的用户的发现了户的发现了DirectX 11DirectX 11已经包含其中了已经包含其中了DirectX 11DirectX 11作为作为3D3D图形接口,图形接口,不仅支持未来的不仅支持未来的DX11DX11硬件,还向下兼容当前的硬件,还向下兼容当前的DirectX 10DirectX 10和和10.110.1硬硬件。

      件DirectX 11DirectX 11增加了新的计算增加了新的计算shadershader技术,可以允许技术,可以允许GPUGPU从事更多从事更多的通用计算工作,而不仅仅是的通用计算工作,而不仅仅是3D3D运算,这可以鼓励开发人员更好地运算,这可以鼓励开发人员更好地将将GPUGPU作为并行处理器使用作为并行处理器使用 第一章 DirectX简介三、历史 Directx 11.2Directx 11.220132013年年6 6月月2828日,微软发布日,微软发布Directx11.2Directx11.2((AlphaAlpha版)版),其中一个重要特性是允许游戏使用系统内存和显,其中一个重要特性是允许游戏使用系统内存和显存储存纹理数据,微软的存储存纹理数据,微软的Antoine LeblondAntoine Leblond在在BUILDBUILD大会上演示了主要利用内存而不是显存去储存大会上演示了主要利用内存而不是显存去储存9GB9GB纹理数据这项特性对于未来的高清游戏具有重要纹理数据这项特性对于未来的高清游戏具有重要意义然而一个问题是,意义然而一个问题是,DirectX 11.2DirectX 11.2不支持不支持Windows 8Windows 8及之前操作系统,只支持及之前操作系统,只支持Windows 8.1Windows 8.1和下一代主机和下一代主机Xbox OneXbox One及及Play Station 4Play Station 4。

      第一章 DirectX简介三、历史 XNAXNA美国微软于美国微软于 8 8 月月 13 13 日发表针对业余创作者所设计的游戏开发套件日发表针对业余创作者所设计的游戏开发套件「「XNA Game Studio ExpressXNA Game Studio Express」」, ,提供没有专门开发器材的一般提供没有专门开发器材的一般 PC PC Windows XP Windows XP 使用者开发跨使用者开发跨 Xbox 360 Xbox 360 与与 PC PC 平台游戏的管道平台游戏的管道.XNA.XNA是是MicrosoftMicrosoft的下一代软件开发平台,致力于帮助开发者更快地开发更的下一代软件开发平台,致力于帮助开发者更快地开发更好的游戏好的游戏XNAXNA被微软公司开发,并且开始于多年前,但是保持地非常秘密被微软公司开发,并且开始于多年前,但是保持地非常秘密在在20042004年年GDCGDC(年度最大的游戏开发讨论会)上微软第一次宣布(年度最大的游戏开发讨论会)上微软第一次宣布XNAXNAXNAXNA不仅仅像不仅仅像DirectXDirectX一样是个框架;它还包含很多工具,甚一样是个框架;它还包含很多工具,甚至是一个自定义的至是一个自定义的IDEIDE。

      因为直到因为直到20062006年,还没有一点工具被发布,年,还没有一点工具被发布,DirectXDirectX的开发者们仅仅在的开发者们仅仅在20042004到到20062006年的年的DirectX SDKDirectX SDK文档的右上文档的右上角标示了角标示了“ “XNA”XNA”的图标 第一章 DirectX简介四、项目框架渲染器状态控制器仿真器 第一章 DirectX简介四、项目框架 1、程序入口1、程序入口 MainMainImports SystemImports SystemImports System.DrawingImports System.DrawingImports Container = System.ComponentModel.ContainerImports Container = System.ComponentModel.ContainerImports Microsoft.DirectXImports Microsoft.DirectX 第一章 DirectX简介四、项目框架 1、程序入口1、程序入口 MainMainPublic Class MainClassPublic Class MainClass Private Graphics As GraphicsClass = NothingPrivate Graphics As GraphicsClass = NothingPublic Shared Sub Main()Public Shared Sub Main() Dim M As New MainClass()Dim M As New MainClass() End SubEnd Sub 第一章 DirectX简介四、项目框架 1、程序入口1、程序入口 MainMainPublic Sub New()Public Sub New() Try Try Graphics = New GraphicsClass() Graphics = New GraphicsClass() Catch E As DirectXException Catch E As DirectXException Return Return End Try End Try If Graphics.CreateGraphicsSample() Then If Graphics.CreateGraphicsSample() Then Graphics.Run() Graphics.Run() End If End If End Sub End SubEnd ClassEnd Class 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassImports SystemImports SystemImports System.DrawingImports System.DrawingImports System.Windows.FormsImports System.Windows.FormsImports Microsoft.DirectXImports Microsoft.DirectXImports Microsoft.DirectX.Direct3DImports Microsoft.DirectX.Direct3DImports Direct3D = Microsoft.DirectX.Direct3DImports Direct3D = Microsoft.DirectX.Direct3DPublic Delegate Sub PeerCloseCallback()Public Delegate Sub PeerCloseCallback()Public Delegate Sub MessageDelegate(Message As Byte)Public Delegate Sub MessageDelegate(Message As Byte) 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassPublic Class GraphicsClassPublic Class GraphicsClass Inherits GraphicsSample Inherits GraphicsSample Private DrawingFont As GraphicsFont = Nothing Private DrawingFont As GraphicsFont = Nothing Private Destination As Point = New Point(0, 0) Private Destination As Point = New Point(0, 0) Private Input As InputClass = Nothing Private Input As InputClass = Nothing Private Play As PlayClass = Nothing Private Play As PlayClass = Nothing Private Const MsgUp As Byte = 0 Private Const MsgUp As Byte = 0 Private Const MsgDown As Byte = 1 Private Const MsgDown As Byte = 1 Private Const MsgLeft As Byte = 2 Private Const MsgLeft As Byte = 2 Private Const MsgRight As Byte = 3 Private Const MsgRight As Byte = 3 Private Const MsgCancelUp As Byte = 4 Private Const MsgCancelUp As Byte = 4 Private Const MsgCancelDown As Byte = 5 Private Const MsgCancelDown As Byte = 5 Private Const MsgCancelLeft As Byte = 6 Private Const MsgCancelLeft As Byte = 6 Private Const MsgCancelRight As Byte = 7 Private Const MsgCancelRight As Byte = 7 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassPublic Sub New()Public Sub New() Me.Text = “ Me.Text = “游戏框架游戏框架“ “ Play = New PlayClass(Me)Play = New PlayClass(Me) Input = New InputClass(Me, Play) Input = New InputClass(Me, Play) DrawingFont = New GraphicsFont("Arial", DrawingFont = New GraphicsFont("Arial", System.Drawing.FontStyle.Bold)System.Drawing.FontStyle.Bold) End Sub End Sub 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassProtected Overrides Sub Render()Protected Overrides Sub Render() Input.GetInputState() Input.GetInputState()Device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.Blue, 1.0f, Device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.Blue, 1.0f, 0)0)Device.BeginScene()Device.BeginScene() DrawingFont.DrawText(5, 5, Color.White, "X: " & Destination.X & DrawingFont.DrawText(5, 5, Color.White, "X: " & Destination.X & " Y: " & Destination.Y)" Y: " & Destination.Y)Device.EndScene()Device.EndScene() End Sub End Sub 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassProtected Overrides Sub InitializeDeviceObjects()Protected Overrides Sub InitializeDeviceObjects() DrawingFont.InitializeDeviceObjects(Device) DrawingFont.InitializeDeviceObjects(Device)End SubEnd Sub 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassProtected Overrides Overloads Sub Dispose(ByVal Disposing As Protected Overrides Overloads Sub Dispose(ByVal Disposing As Boolean)Boolean) Play.Dispose() Play.Dispose() MyBase.Dispose(Disposing) MyBase.Dispose(Disposing) End Sub End Sub 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassPublic Sub PeerClose()Public Sub PeerClose()Me.Dispose()Me.Dispose() End Sub End Sub 第一章 DirectX简介四、项目框架 2 2、、 GraphicsClassGraphicsClassPublic Sub MessageArrived(Message As Byte)Public Sub MessageArrived(Message As Byte) Select Case (Message) Select Case (Message) Case MsgUp: Case MsgUp: Destination.X = 1 Destination.X = 1 … …Case MsgCancelRight:Case MsgCancelRight: Destination.Y = 0 Destination.Y = 0 End Select End Select End Sub End Sub 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类Imports SystemImports SystemImports System.DrawingImports System.DrawingImports System.Windows.FormsImports System.Windows.FormsImports Microsoft.DirectXImports Microsoft.DirectXImports Microsoft.DirectX.DirectInputImports Microsoft.DirectX.DirectInput 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类Public Class InputClassPublic Class InputClass Private Const MsgUp As Byte = 0 Private Const MsgUp As Byte = 0 Private Const MsgDown As Byte = 1 Private Const MsgDown As Byte = 1 Private Const MsgLeft As Byte = 2 Private Const MsgLeft As Byte = 2 Private Const MsgRight As Byte = 3 Private Const MsgRight As Byte = 3 Private Const MsgCancelUp As Byte = 4 Private Const MsgCancelUp As Byte = 4 Private Const MsgCancelDown As Byte = 5 Private Const MsgCancelDown As Byte = 5 Private Const MsgCancelLeft As Byte = 6 Private Const MsgCancelLeft As Byte = 6 Private Const MsgCancelRight As Byte = 7 Private Const MsgCancelRight As Byte = 7 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 Private PressedDown As Boolean = FalsePrivate PressedDown As Boolean = False Private PressedLeft As Boolean = False Private PressedLeft As Boolean = False Private PressedRight As Boolean = False Private PressedRight As Boolean = False Private Owner As Control = Nothing Private Owner As Control = Nothing Private LocalDevice As Device = Nothing Private LocalDevice As Device = Nothing Private Play As PlayClass = Nothing Private Play As PlayClass = Nothing 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 Public Sub New(Owner As Control , Play As PlayClass )Public Sub New(Owner As Control , Play As PlayClass ) Me.Owner = Owner Me.Owner = Owner Me.Play = Play Me.Play = Play LocalDevice = New Device(SystemGuid.Keyboard) LocalDevice = New Device(SystemGuid.Keyboard) LocalDevice.SetDataFormat(DeviceDataFormat.Keyboard) LocalDevice.SetDataFormat(DeviceDataFormat.Keyboard) LocalDevice.SetCooperativeLevel(Owner, LocalDevice.SetCooperativeLevel(Owner, CooperativeLevelFlags.Foreground Or CooperativeLevelFlags.Foreground Or CooperativeLevelFlags.NonExclusive) CooperativeLevelFlags.NonExclusive) End Sub End Sub 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 Public Function GetInputState() As PointPublic Function GetInputState() As Point Dim State As KeyboardState = Nothing Dim State As KeyboardState = Nothing Dim P As Point = New Point(0) Dim P As Point = New Point(0) Dim Continue As Boolean Dim Continue As Boolean Try Try State = LocalDevice.GetCurrentKeyboardState() State = LocalDevice.GetCurrentKeyboardState() 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 Catch E As InputExceptionCatch E As InputException Do Do Continue = False Continue = False Application.DoEvents() Application.DoEvents() Try Try LocalDevice.Acquire() LocalDevice.Acquire() Catch E2 As InputLostException Catch E2 As InputLostException Continue = True Continue = True Catch E3 As OtherApplicationHasPriorityException Catch E3 As OtherApplicationHasPriorityException Continue = True Continue = True End Try End Try 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 If Not Owner.Created Then Exit DoIf Not Owner.Created Then Exit Do Loop While Continue Loop While Continue End Try End Try If(Nothing Is State) Then If(Nothing Is State) Then Return P Return P End If End If 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 If(State.Item(Key.Down)) ThenIf(State.Item(Key.Down)) Then PressedDown = True PressedDown = True Play.WriteMessage(MsgDown) Play.WriteMessage(MsgDown) Else If (PressedDown = True) Then Else If (PressedDown = True) Then PressedDown = False PressedDown = False Play.WriteMessage(MsgCancelDown) Play.WriteMessage(MsgCancelDown) End If End If 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 If(State(Key.Up)) ThenIf(State(Key.Up)) Then PressedUp = True PressedUp = True Play.WriteMessage(MsgUp) Play.WriteMessage(MsgUp) Else If (PressedUp = True) Then Else If (PressedUp = True) Then PressedUp = False PressedUp = False Play.WriteMessage(MsgCancelUp) Play.WriteMessage(MsgCancelUp) End If End If 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 If(State(Key.Left)) ThenIf(State(Key.Left)) Then PressedLeft = True PressedLeft = True Play.WriteMessage(MsgLeft) Play.WriteMessage(MsgLeft) Else If (PressedLeft = True) Else If (PressedLeft = True) PressedLeft = False PressedLeft = False Play.WriteMessage(MsgCancelLeft) Play.WriteMessage(MsgCancelLeft) End If End If 第一章 DirectX简介四、项目框架 3 3、、 InputClass InputClass 控制器类控制器类 If(State(Key.Right)) ThenIf(State(Key.Right)) Then PressedRight = True PressedRight = True Play.WriteMessage(MsgRight) Play.WriteMessage(MsgRight) Else If (PressedRight = True) Then Else If (PressedRight = True) Then PressedRight = False PressedRight = False Play.WriteMessage(MsgCancelRight) Play.WriteMessage(MsgCancelRight) End If End If Return P Return P End Function End Function 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Imports SystemImports SystemImports System.CollectionsImports System.CollectionsImports System.Windows.FormsImports System.Windows.FormsImports Microsoft.DirectXImports Microsoft.DirectXImports Microsoft.DirectX.DirectPlayImports Microsoft.DirectX.DirectPlay 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类Public Class PlayClassPublic Class PlayClass Implements IDisposable Implements IDisposable Private Message As MessageDelegate = Nothing Private Message As MessageDelegate = Nothing Private Parent As GraphicsClass = Nothing Private Parent As GraphicsClass = Nothing Public PeerObject As Peer = Nothing Public PeerObject As Peer = Nothing Private Connect As ConnectWizard = Nothing Private Connect As ConnectWizard = Nothing Private PlayerList As ArrayList = New ArrayList() Private PlayerList As ArrayList = New ArrayList() Private LocalPlayerID As Integer = 0 Private LocalPlayerID As Integer = 0Public AppGuid As Guid = New Guid("{876a3036-Ffd7-46bc-9209-Public AppGuid As Guid = New Guid("{876a3036-Ffd7-46bc-9209-B42f617b9bF1}")B42f617b9bF1}") 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Public Structure PlayersPublic Structure Players Public DpnID As Integer Public DpnID As Integer Public Name As String Public Name As String Public Sub New(Id As Integer , N As String) Public Sub New(Id As Integer , N As String) DpnID = Id DpnID = Id Name = N Name = N End Sub End Sub End Structure End Structure 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Public Overloads Sub Dispose() Implements IDisposable.DisposePublic Overloads Sub Dispose() Implements IDisposable.Dispose PeerObject.Dispose() PeerObject.Dispose() End Sub End Sub 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Public Sub New(Parent As GraphicsClass)Public Sub New(Parent As GraphicsClass) Me.Parent = Parent Me.Parent = Parent Me.PeerObject = PeerObject Me.PeerObject = PeerObject Me.Message = New MessageDelegate(AddressOf Me.Message = New MessageDelegate(AddressOf Parent.MessageArrived)Parent.MessageArrived) PeerObject = New Peer() PeerObject = New Peer() 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类AddHandler PeerObject.PlayerCreated, AddressOf Me.PlayerCreatedAddHandler PeerObject.PlayerCreated, AddressOf Me.PlayerCreated AddHandler PeerObject.PlayerDestroyed, AddressOf AddHandler PeerObject.PlayerDestroyed, AddressOf Me.PlayerDestroyedMe.PlayerDestroyed AddHandler PeerObject.HostMigrated, AddressOf AddHandler PeerObject.HostMigrated, AddressOf Me.HostMigratedMe.HostMigrated AddHandler PeerObject.Receive, AddressOf Me.DataReceived AddHandler PeerObject.Receive, AddressOf Me.DataReceived AddHandler PeerObject.SessionTerminated, AddressOf AddHandler PeerObject.SessionTerminated, AddressOf Me.SessionTerminatedMe.SessionTerminated 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Connect = New ConnectWizard(PeerObject, AppGuid, “Connect = New ConnectWizard(PeerObject, AppGuid, “游戏框架游戏框架")") If (Not Connect.StartWizard()) Then If (Not Connect.StartWizard()) Then Me.Parent.Show() Me.Parent.Show() MessageBox.Show("DirectPlay Initialization Was Incomplete. MessageBox.Show("DirectPlay Initialization Was Incomplete. Application Will Terminate.")Application Will Terminate.") Throw New DirectXException() Throw New DirectXException() End If End If End Sub End Sub 第一章 DirectX简介四、项目框架 4 4、、 PlayClass PlayClass 玩家角色类玩家角色类 Connect = New ConnectWizard(PeerObject, AppGuid, “Connect = New ConnectWizard(PeerObject, AppGuid, “游戏框架游戏框架")") If (Not Connect.StartWizard()) Then If (Not Connect.StartWizard()) Then Me.Parent.Show() Me.Parent.Show() MessageBox.Show("DirectPlay Initialization Was Incomplete. MessageBox.Show("DirectPlay Initialization Was Incomplete. Application Will Terminate.")Application Will Terminate.") Throw New DirectXException() Throw New DirectXException() End If End If End Sub End Sub 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.