收藏 分销(赏)

游戏软件开发-.ppt

上传人:w****g 文档编号:11894645 上传时间:2025-08-19 格式:PPT 页数:52 大小:1.10MB 下载积分:14 金币
下载 相关 举报
游戏软件开发-.ppt_第1页
第1页 / 共52页
游戏软件开发-.ppt_第2页
第2页 / 共52页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,游戏软件开发,1,第一章,DirectX,简介,一、什么是,DirectX,DirectX,,(,Direct eXtension,,简称,DX,)是由微软公司创建的多媒体编程接口。由,C+,编程语言实现,遵循,COM,。被广泛使用于,Microsoft Windows,、,Microsoft Xbox,和,Microsoft Xbox 360,电子游戏开发,并且只能支持这些平台。最新版本为,DirectX 11.1,,创建在最新的,Windows 8,上。,2,第一章,DirectX,简介,二、功能,DirectX,加强,3D,图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低了用户安装及设置硬件的复杂度。,从字面意义上说,,Direct,就是直接的意思,而后边的,X,则代表了很多的意思,从这一点上可以看出,DirectX,的出现就是为了为众多软件提供直接服务的。,3,第一章,DirectX,简介,三、组成,DirectX,是由很多,API,组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。,4,第一章,DirectX,简介,三、组成,1,、显示部分,显示部分担任图形处理的关键,分为,DirectDraw,(,DDraw,)和,Direct3D,(,D3D,),前者主要负责,2D,图像加速。它包括很多方面:我们播放,mpg,、,DVD,电影、看图、玩小游戏等等都是用的,DDraw,,你可以把它理解成所有划线的部分都是用的,DDraw,。后者则主要负责,3D,效果的显示,比如,CS,中的场景和人物、,FIFA,中的人物等等,都是使用了,DirectX,的,Direct3D,5,第一章,DirectX,简介,三、组成,1,、显示部分,6,第一章,DirectX,简介,三、组成,2,、,声音部分,声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。,7,第一章,DirectX,简介,三、组成,3,、输入部分,输入部分,DirectInput,可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部功能。除了键盘和鼠标之外还可以连接手柄、摇杆、模拟器等。,8,第一章,DirectX,简介,三、组成,4,、网络部分,网络部分,DirectPlay,主要就是为了具有网络功能游戏而开发的,提供了多种连接方式,,TCP/IP,,,IPX,,,Modem,,串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。,9,第一章,DirectX,简介,三、历史,1,、,DirectX 1.0,第一代的,DirectX,很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形,API,OpenGL,,缺乏硬件的支持成了其流行的最大障碍。,2,、,DirectX 2.0,DirectX 2.0,在二维图形方面做了些改进,增加了一些动态效果,采用了,Direct 3D,的技术。这样,DirectX 2.0,与,DirectX 1.0,有了相当大的不同。在,DirectX 2.0,中,采用了,“,平滑模拟和,RGB,模拟,”,两种模拟方式对三维,(3D),图像进行加速计算的。,DirectX 2.0,同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从,DirectX 2.0,开始,整个,DirectX,的设计架构雏形就已基本完成。,10,第一章,DirectX,简介,三、历史,DirectX 3.0,的推出是在,1997,年最后一个版本的,Windows95,发布后不久,此时,3D,游戏开始深入人心,,DirectX,也逐渐得到软硬件厂商的认可。,97,年时应用程序接口标准共有三个,分别是专业的,OpenGL,接口,微软的,DirectX D,接口和,3DFX,公司的,Glide,接口。而那时的,3DFX,公司是最为强大的显卡制造商,它的,Glide,接口自然也受到最广泛的应用,但随着,3DFX,公司的没落,,Voodoo,显卡的衰败,,Glide,接口才逐渐消失了。,DirectX 3.0,是,DirectX 2.0,的简单升级版,它对,DirectX 2.0,的改动并不多。包括对,DirectSound,(针对,3D,声音功能)和,DirectPlay,(针对游戏,/,网络)的一些修改和升级。,DirectX 3.0,集成了较简单的,3D,效果,还不是很成熟。,11,第一章,DirectX,简介,三、历史,DirectX 5.0,微软公司并没有推出,DirectX 4.0,,而是直接推出了,DirectX 5.0,。此版本对,Direct3D,做出了很大的改动,加入了雾化效果、,Alpha,混合等,3D,特效,使,3D,游戏中的空间感和真实感得以增强,还加入了,S3,的纹理压缩技术。,同时,,DirectX 5.0,在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,,DirectX,发展到,DirectX 5.0,才真正走向了成熟。此时的,DirectX,性能完全不逊色于其它,3D API,,而且大有后来居上之势。,12,第一章,DirectX,简介,三、历史,DirectX 6.0,推出时,其最大的竞争对手之一,Glide,,已逐步走向了没落,而,DirectX,则得到了大多数厂商的认可。,DirectX 6.0,中加入了双线性过滤、三线性过滤等优化,3D,图像质量的技术,游戏中的,3D,技术逐渐走入成熟阶段。,13,第一章,DirectX,简介,三、历史,DirectX 7.0,最大的特色就是支持,T&L,,中文名称是,“,坐标转换和光源,”,。,3D,游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;,3D,游戏中除了场景,+,物体还需要灯光,没有灯光就没有,3D,物体的表现,无论是实时,3D,游戏还是,3D,影像渲染,加上灯光的,3D,渲染是最消耗资源的。虽然,OpenGL,中已有相关技术,但此前从未在民用级硬件中出现。,在,T&L,问世之前,位置转换和灯光都需要,CPU,来计算,,CPU,速度越快,游戏表现越流畅。使用了,T&L,功能后,这两种效果的计算用显示卡的,GPU,来计算,这样就可以把,CPU,从繁忙的劳动中解脱出来。换句话说,拥有,T&L,显示卡,使用,DirectX 7.0,,即使没有高速的,CPU,,同样能流畅的跑,3D,游戏。,14,第一章,DirectX,简介,三、历史,DirectX 8.0,的推出引发了一场显卡革命,它首次引入了,“,像素渲染,”,概念,同时具备像素渲染引擎,(Pixel Shader),与顶点渲染引擎,(Vertex Shader),,反映在特效上就是动态光影效果。同硬件,T&L,仅仅实现的固定光影转换相比,,VS,和,PS,单元的灵活性更大,它使,GPU,真正成为了可编程的处理器。这意味着程序员可通过它们实现,3D,场景构建的难度大大降低。通过,VS,和,PS,的渲染,可以很容易的营造出真实的水面动态波纹光影效果。此时,DirectX,的权威地位终于建成。,15,第一章,DirectX,简介,三、历史,DirectX 9.0,2002,年底,微软发布,DirectX9.0,。,DirectX 9,中,PS,单元的渲染精度已达到浮点精度,传统的硬件,T&L,单元也被取消。全新的,VertexShader(,顶点着色引擎,),编程将比以前复杂得多,新的,VertexShader,标准增加了流程控制,更多的常量,每个程序的着色指令增加到了,1024,条。,PS 2.0,具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外,PS1.4,只能支持,28,个硬件指令,同时操作,6,个材质,而,PS2.0,却可以支持,160,个硬件指令,同时操作,16,个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。,16,第一章,DirectX,简介,三、历史,DirectX 9.0C,与过去的,DirectX 9.0b,和,Shader Model 2.0,相比较,,DirectX 9.0c,最大的改进,便是引入了对,Shader Model 3.0(,包括,Pixel Shader 3.0,和,Vertex Shader 3.0,两个着色语言规范,),的全面支持。举例来说,,DirectX 9.0b,的,Shader Model 2.0,所支持的,Vertex Shader,最大指令数仅为,256,个,,Pixel Shader,最大指令数更是只有,96,个。而在最新的,Shader Model 3.0,中,,Vertex Shader,和,Pixel Shader,的最大指令数都大幅上升至,65535,个,全新的动态程序流控制、位移贴图、多渲染目标(,MRT,)、次表面散射,Subsurface scattering,、柔和阴影,Soft shadows,、环境和地面阴影,Environmental and ground shadows,、全局照明(,Global illumination,)等新技术特性,使得,GeForce 6,、,GeForce7,系列以及,Radeon X1000,系列立刻为新一代游戏以及具备无比真实感、幻想般的复杂的数字世界和逼真的角色在影视品质的环境中活动提供强大动力。,17,第一章,DirectX,简介,三、历史,Directx 10.0,已经包含在,Windows Vista,操作系统中,目前无法单独下载使用,新的,DirectX,使你获得更好的图像显示质量,使多人游戏具可伸缩性,以及包括更棒的音频效果。它强化了针对,DirectDraw,和,Direct3D,的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的,3-D,角色和环境;点光源式光影和像素式光影使图象更逼真;强化了,DirectSound,和,DirectMusic,,简化了其应用扩展;,DLS2,音频合成功能提高了乐器音频的真实感;,DirectInput,的设备影射功能令对设备的支持更简单;,DirectPlay,使多人游戏的性能和可扩展性得到了提高;,DirectPlay,提供了,IP,声音通讯;,DirectShow,的应用编程接口提供了音频,/,视频的实时合成和即时编辑;,DirectShow,支持,Windows,媒体音频和视频,(WMA,和,WMV),的读写;,Microsoft TV,技术可以支持数字电视节目。,18,第一章,DirectX,简介,三、历史,Directx 11,2009,年,1,月,9,日星期五,微软将面向公众发布,Windows 7,客户端,Beta 1,测试版。而此前一天,即,1,月,8,日,微软将率先发布,Windows 7,服务器版本的,Beta 1,测试版。,Windows 7,是微软的下一代操作系统,当前业内普遍认为,微软将在,2009,年圣诞购物旺季前发布,Windows 7,正式版。,在微软刚刚发布的,Windows 7Beta,版本中,一些已经安装使用的用户的发现了,DirectX 11,已经包含其中了。,DirectX 11,作为,3D,图形接口,不仅支持未来的,DX11,硬件,还向下兼容当前的,DirectX 10,和,10.1,硬件。,DirectX 11,增加了新的计算,shader,技术,可以允许,GPU,从事更多的通用计算工作,而不仅仅是,3D,运算,这可以鼓励开发人员更好地将,GPU,作为并行处理器使用。,19,第一章,DirectX,简介,三、历史,Directx 11.2,2013,年,6,月,28,日,微软发布,Directx11.2,(,Alpha,版),其中一个重要特性是允许游戏使用系统内存和显存储存纹理数据,微软的,Antoine Leblond,在,BUILD,大会上演示了主要利用内存而不是显存去储存,9GB,纹理数据。这项特性对于未来的高清游戏具有重要意义。然而一个问题是,,DirectX 11.2,不支持,Windows 8,及之前操作系统,只支持,Windows 8.1,和下一代主机,Xbox One,及,Play Station 4,。,20,第一章,DirectX,简介,三、历史,XNA,美国微软于,8,月,13,日发表针对业余创作者所设计的游戏开发套件,XNA Game Studio Express,提供没有专门开发器材的一般,PC Windows XP,使用者开发跨,Xbox 360,与,PC,平台游戏的管道,.XNA,是,Microsoft,的下一代软件开发平台,致力于帮助开发者更快地开发更好的游戏。,XNA,被微软公司开发,并且开始于多年前,但是保持地非常秘密。在,2004,年,GDC,(年度最大的游戏开发讨论会)上微软第一次宣布,XNA,。,XNA,不仅仅像,DirectX,一样是个框架;它还包含很多工具,甚至是一个自定义的,IDE,。因为直到,2006,年,还没有一点工具被发布,,DirectX,的开发者们仅仅在,2004,到,2006,年的,DirectX SDK,文档的右上角标示了,“,XNA,”,的图标。,21,第一章,DirectX,简介,四、项目框架,渲染器,状态,控制器,仿真器,22,第一章,DirectX,简介,四、项目框架,、程序入口,Main,Imports System,Imports System.Drawing,Imports Container=System.ComponentModel.Container,Imports Microsoft.DirectX,23,第一章,DirectX,简介,四、项目框架,、程序入口,Main,Public Class MainClass,Private Graphics As GraphicsClass=Nothing,Public Shared Sub Main(),Dim M As New MainClass(),End Sub,24,第一章,DirectX,简介,四、项目框架,、程序入口,Main,Public Sub New(),Try,Graphics=New GraphicsClass(),Catch E As DirectXException,Return,End Try,If Graphics.CreateGraphicsSample()Then,Graphics.Run(),End If,End Sub,End Class,25,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Imports System,Imports System.Drawing,Imports System.Windows.Forms,Imports Microsoft.DirectX,Imports Microsoft.DirectX.Direct3D,Imports Direct3D=Microsoft.DirectX.Direct3D,Public Delegate Sub PeerCloseCallback(),Public Delegate Sub MessageDelegate(Message As Byte),26,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Public Class GraphicsClass,Inherits GraphicsSample,Private DrawingFont As GraphicsFont=Nothing,Private Destination As Point=New Point(0,0),Private Input As InputClass=Nothing,Private Play As PlayClass=Nothing,Private Const MsgUp As Byte=0,Private Const MsgDown As Byte=1,Private Const MsgLeft As Byte=2,Private Const MsgRight As Byte=3,Private Const MsgCancelUp As Byte=4,Private Const MsgCancelDown As Byte=5,Private Const MsgCancelLeft As Byte=6,Private Const MsgCancelRight As Byte=7,27,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Public Sub New(),Me.Text=,“,游戏框架,“,Play=New PlayClass(Me),Input=New InputClass(Me,Play),DrawingFont=New GraphicsFont(Arial,System.Drawing.FontStyle.Bold),End Sub,28,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Protected Overrides Sub Render(),Input.GetInputState(),Device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer,Color.Blue,1.0f,0),Device.BeginScene(),DrawingFont.DrawText(5,5,Color.White,X:&Destination.X&Y:&Destination.Y),Device.EndScene(),End Sub,29,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Protected Overrides Sub InitializeDeviceObjects(),DrawingFont.InitializeDeviceObjects(Device),End Sub,30,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Protected Overrides Overloads Sub Dispose(ByVal Disposing As Boolean),Play.Dispose(),MyBase.Dispose(Disposing),End Sub,31,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Public Sub PeerClose(),Me.Dispose(),End Sub,32,第一章,DirectX,简介,四、项目框架,2,、,GraphicsClass,Public Sub MessageArrived(Message As Byte),Select Case(Message),Case MsgUp:,Destination.X=1,Case MsgCancelRight:,Destination.Y=0,End Select,End Sub,33,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Imports System,Imports System.Drawing,Imports System.Windows.Forms,Imports Microsoft.DirectX,Imports Microsoft.DirectX.DirectInput,34,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Public Class InputClass,Private Const MsgUp As Byte=0,Private Const MsgDown As Byte=1,Private Const MsgLeft As Byte=2,Private Const MsgRight As Byte=3,Private Const MsgCancelUp As Byte=4,Private Const MsgCancelDown As Byte=5,Private Const MsgCancelLeft As Byte=6,Private Const MsgCancelRight As Byte=7,35,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Private PressedDown As Boolean=False,Private PressedLeft As Boolean=False,Private PressedRight As Boolean=False,Private Owner As Control=Nothing,Private LocalDevice As Device=Nothing,Private Play As PlayClass=Nothing,36,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Public Sub New(Owner As Control,Play As PlayClass),Me.Owner=Owner,Me.Play=Play,LocalDevice=New Device(SystemGuid.Keyboard),LocalDevice.SetDataFormat(DeviceDataFormat.Keyboard),LocalDevice.SetCooperativeLevel(Owner,CooperativeLevelFlags.Foreground Or CooperativeLevelFlags.NonExclusive),End Sub,37,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Public Function GetInputState()As Point,Dim State As KeyboardState=Nothing,Dim P As Point=New Point(0),Dim Continue As Boolean,Try,State=LocalDevice.GetCurrentKeyboardState(),38,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,Catch E As InputException,Do,Continue=False,Application.DoEvents(),Try,LocalDevice.Acquire(),Catch E2 As InputLostException,Continue=True,Catch E3 As OtherApplicationHasPriorityException,Continue=True,End Try,39,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,If Not Owner.Created Then Exit Do,Loop While Continue,End Try,If(Nothing Is State)Then,Return P,End If,40,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,If(State.Item(Key.Down)Then,PressedDown=True,Play.WriteMessage(MsgDown),Else If(PressedDown=True)Then,PressedDown=False,Play.WriteMessage(MsgCancelDown),End If,41,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,If(State(Key.Up)Then,PressedUp=True,Play.WriteMessage(MsgUp),Else If(PressedUp=True)Then,PressedUp=False,Play.WriteMessage(MsgCancelUp),End If,42,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,If(State(Key.Left)Then,PressedLeft=True,Play.WriteMessage(MsgLeft),Else If(PressedLeft=True),PressedLeft=False,Play.WriteMessage(MsgCancelLeft),End If,43,第一章,DirectX,简介,四、项目框架,3,、,InputClass,控制器类,If(State(Key.Right)Then,PressedRight =True,Play.WriteMessage(MsgRight),Else If(PressedRight=True)Then,PressedRight=False,Play.WriteMessage(MsgCancelRight),End If,Return P,End Function,44,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Imports System,Imports System.Collections,Imports System.Windows.Forms,Imports Microsoft.DirectX,Imports Microsoft.DirectX.DirectPlay,45,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Public Class PlayClass,Implements IDisposable,Private Message As MessageDelegate=Nothing,Private Parent As GraphicsClass=Nothing,Public PeerObject As Peer=Nothing,Private Connect As ConnectWizard=Nothing,Private PlayerList As ArrayList=New ArrayList(),Private LocalPlayerID As Integer=0,Public AppGuid As Guid=New Guid(876a3036-Ffd7-46bc-9209-B42f617b9bF1),46,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Public Structure Players,Public DpnID As Integer,Public Name As String,Public Sub New(Id As Integer,N As String),DpnID=Id,Name=N,End Sub,End Structure,47,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Public Overloads Sub Dispose()Implements IDisposable.Dispose,PeerObject.Dispose(),End Sub,48,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Public Sub New(Parent As GraphicsClass),Me.Parent=Parent,Me.PeerObject=PeerObject,Me.Message=New MessageDelegate(AddressOf Parent.MessageArrived),PeerObject=New Peer(),49,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,AddHandler PeerObject.PlayerCreated,AddressOf Me.PlayerCreated,AddHandler PeerObject.PlayerDestroyed,AddressOf Me.PlayerDestroyed,AddHandler PeerObject.HostMigrated,AddressOf Me.HostMigrated,AddHandler PeerObject.Receive,AddressOf Me.DataReceived,AddHandler PeerObject.SessionTerminated,AddressOf Me.SessionTerminated,50,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Connect=New ConnectWizard(PeerObject,AppGuid,“,游戏框架,),If(Not Connect.StartWizard()Then,Me.Parent.Show(),MessageBox.Show(DirectPlay Initialization Was Incomplete.Application Will Terminate.),Throw New DirectXException(),End If,End Sub,51,第一章,DirectX,简介,四、项目框架,4,、,PlayClass,玩家角色类,Connect=New ConnectWizard(PeerObject,AppGuid,“,游戏框架,),If(Not Connect.StartWizard()Then,Me.Parent.Show(),MessageBox.Show(DirectPlay Initialization Was Incomplete.Application Will Terminate.),Throw New DirectXException(),End If,End Sub,52,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服