




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
游戲軟件開發第一章DirectX簡介一、什么是DirectX
DirectX,(DirecteXtension,簡稱DX)是由微軟公司創建的多媒體編程接口。由C++編程語言實現,遵循。被廣泛使用于MicrosoftWindows、MicrosoftXbox與MicrosoftXbox360電子游戲開發,同時只能支持這些平臺。最新版本為DirectX11、1,創建在最新的Windows8上。第一章DirectX簡介二、功能
DirectX加強3D圖形與聲音效果,并提供設計人員一個共同的硬件驅動標準,讓游戲開發者不必為每一品牌的硬件來寫不同的驅動程序,也降低了用戶安裝及設置硬件的復雜度。從字面意義上說,Direct就是直截了當的意思,而后邊的X則代表了特別多的意思,從這一點上能夠看出DirectX的出現就是為了為眾多軟件提供直截了當服務的。第一章DirectX簡介三、組成
DirectX是由特別多API組成的,依照性質分類,能夠分為四大部分,顯示部分、聲音部分、輸入部分與網絡部分。第一章DirectX簡介三、組成
1、顯示部分顯示部分擔任圖形處理的關鍵,分為DirectDraw(DDraw)與Direct3D(D3D),前者主要負責2D圖像加速。它包括特別多方面:我們播放mpg、DVD電影、看圖、玩小游戲等等都是用的DDraw,您能夠把它理解成所有劃線的部分都是用的DDraw。后者則主要負責3D效果的顯示,比如CS中的場景與人物、FIFA中的人物等等,都是使用了DirectX的Direct3D第一章DirectX簡介三、組成
1、顯示部分
第一章DirectX簡介三、組成
2、聲音部分
聲音部分中最主要的API是DirectSound,除了播放聲音與處理混音之外,還加強了3d音效,并提供了錄音功能。第一章DirectX簡介三、組成
3、輸入部分輸入部分DirectInput能夠支持特別多的游戲輸入設備,它能夠讓這些設備充分發揮最佳狀態與全部功能。除了鍵盤與鼠標之外還能夠連接手柄、搖桿、模擬器等。第一章DirectX簡介三、組成
4、網絡部分網絡部分DirectPlay主要就是為了具有網絡功能游戲而開發的,提供了多種連接方式,TCP/IP,IPX,Modem,串口等等,讓玩家能夠用各種連網方式來進行對戰,此外也提供網絡對話功能及保密措施。第一章DirectX簡介三、歷史1、DirectX1、0第一代的DirectX特別不成功,推出時眾多的硬件均不支持,當時基本都采納專業圖形API-OpenGL,缺乏硬件的支持成了其流行的最大障礙。2、DirectX2、0DirectX2、0在二維圖形方面做了些改進,增加了一些動態效果,采納了Direct3D的技術。如此DirectX2、0與DirectX1、0有了相當大的不同。在DirectX2、0中,采納了“平滑模擬與RGB模擬”兩種模擬方式對三維(3D)圖像進行加速計算的。DirectX2、0同時也采納了更加友好的用戶設置程序并更正了應用程序接口的許多問題。從DirectX2、0開始,整個DirectX的設計架構雛形就已基本完成。第一章DirectX簡介三、歷史
DirectX3、0的推出是在1997年最后一個版本的Windows95公布后不久,此時3D游戲開始深入人心,DirectX也逐漸得到軟硬件廠商的認可。97年時應用程序接口標準共有三個,分別是專業的OpenGL接口,微軟的DirectXD接口與3DFX公司的Glide接口。而那時的3DFX公司是最為強大的顯卡制造商,它的Glide接口自然也受到最廣泛的應用,但隨著3DFX公司的沒落,Voodoo顯卡的衰敗,Glide接口才逐漸消失了。DirectX3、0是DirectX2、0的簡單升級版,它對DirectX2、0的改動并不多。包括對DirectSound(針對3D聲音功能)與DirectPlay(針對游戲/網絡)的一些修改與升級。DirectX3、0集成了較簡單的3D效果,還不是特別成熟。第一章DirectX簡介三、歷史
DirectX5、0微軟公司并沒有推出DirectX4、0,而是直截了當推出了DirectX5、0。此版本對Direct3D做出了特別大的改動,加入了霧化效果、Alpha混合等3D特效,使3D游戲中的空間感與真實感得以增強,還加入了S3的紋理壓縮技術。同時,DirectX5、0在其它各組件方面也有加強,在聲卡、游戲控制器方面均做了改進,支持了更多的設備。因此,DirectX發展到DirectX5、0才真正走向了成熟。此時的DirectX性能完全不遜色于其它3DAPI,而且大有后來居上之勢。第一章DirectX簡介三、歷史
DirectX6、0推出時,其最大的競爭對手之一Glide,已逐步走向了沒落,而DirectX則得到了大多數廠商的認可。DirectX6、0中加入了雙線性過濾、三線性過濾等優化3D圖像質量的技術,游戲中的3D技術逐漸走入成熟時期。第一章DirectX簡介三、歷史
DirectX7、0最大的特色就是支持T&L,中文名稱是“坐標轉換與光源”。3D游戲中的任何一個物體都有一個坐標,當此物體運動時,它的坐標發生變化,這指的就是坐標轉換;3D游戲中除了場景+物體還需要燈光,沒有燈光就沒有3D物體的表現,不管是實時3D游戲依然3D影像渲染,加上燈光的3D渲染是最消耗資源的。盡管OpenGL中已有相關技術,但此前從未在民用級硬件中出現。在T&L問世之前,位置轉換與燈光都需要CPU來計算,CPU速度越快,游戲表現越流暢。使用了T&L功能后,這兩種效果的計算用顯示卡的GPU來計算,如此就能夠把CPU從繁忙的勞動中解脫出來。換句話說,擁有T&L顯示卡,使用DirectX7、0,即使沒有高速的CPU,同樣能流暢的跑3D游戲。第一章DirectX簡介三、歷史
DirectX8、0的推出引發了一場顯卡革命,它首次引入了“像素渲染”概念,同時具備像素渲染引擎(PixelShader)與頂點渲染引擎(VertexShader),反映在特效上就是動態光影效果。同硬件T&L僅僅實現的固定光影轉換相比,VS與PS單元的靈活性更大,它使GPU真正成為了可編程的處理器。這意味著程序員可通過它們實現3D場景構建的難度大大降低。通過VS與PS的渲染,能夠特別容易的營造出真實的水面動態波紋光影效果。此時DirectX的權威地位終于建成。第一章DirectX簡介三、歷史
DirectX9、02002年底,微軟公布DirectX9、0。DirectX9中PS單元的渲染精度已達到浮點精度,傳統的硬件T&L單元也被取消。全新的VertexShader(頂點著色引擎)編程將比往常復雜得多,新的VertexShader標準增加了流程控制,更多的常量,每個程序的著色指令增加到了1024條。PS2、0具備完全可編程的架構,能對紋理效果即時演算、動態紋理貼圖,還不占用顯存,理論上對材質貼圖的分辨率的精度提高無限多;另外PS1、4只能支持28個硬件指令,同時操作6個材質,而PS2、0卻能夠支持160個硬件指令,同時操作16個材質數量,新的高精度浮點數據規格能夠使用多重紋理貼圖,可操作的指令數能夠任意長,電影級別的顯示效果輕而易舉的實現。第一章DirectX簡介三、歷史
DirectX9、0C與過去的DirectX9、0b與ShaderModel2、0相比較,DirectX9、0c最大的改進,便是引入了對ShaderModel3、0(包括PixelShader3、0與VertexShader3、0兩個著色語言規范)的全面支持。舉例來說,DirectX9、0b的ShaderModel2、0所支持的VertexShader最大指令數僅為256個,PixelShader最大指令數更是只有96個。而在最新的ShaderModel3、0中,VertexShader與PixelShader的最大指令數都大幅上升至65535個,全新的動態程序流控制、位移貼圖、多渲染目標(MRT)、次表面散射Subsurfacescattering、柔與陰影Softshadows、環境與地面陰影Environmentalandgroundshadows、全局照明(Globalillumination)等新技術特性,使得GeForce6、GeForce7系列以及RadeonX1000系列立刻為新一代游戲以及具備無比真實感、幻想般的復雜的數字世界與逼確實角色在影視品質的環境中活動提供強大動力。第一章DirectX簡介三、歷史
Directx10、0差不多包含在WindowsVista操作系統中,目前無法單獨下載使用新的DirectX使您獲得更好的圖像顯示質量,使多人游戲具可伸縮性,以及包括更棒的音頻效果。它強化了針對DirectDraw與Direct3D的接口,簡化了應用擴展,提升性能;改善了圖形創作工具,更易于做出最佳的3-D角色與環境;點光源式光影與像素式光影使圖象更逼真;強化了DirectSound與DirectMusic,簡化了其應用擴展;DLS2音頻合成功能提高了樂器音頻的真實感;DirectInput的設備影射功能令對設備的支持更簡單;DirectPlay使多人游戲的性能與可擴展性得到了提高;DirectPlay提供了IP聲音通訊;DirectShow的應用編程接口提供了音頻/視頻的實時合成與即時編輯;DirectShow支持Windows媒體音頻與視頻(WMA與WMV)的讀寫;MicrosoftTV技術能夠支持數字電視節目。第一章DirectX簡介三、歷史
Directx112009年1月9日星期五,微軟將面向公眾公布Windows7客戶端Beta1測試版。而此前一天,即1月8日,微軟將領先公布Windows7服務器版本的Beta1測試版。Windows7是微軟的下一代操作系統,當前業內普遍認為,微軟將在2009年圣誕購物旺季前公布Windows7正式版。在微軟剛剛公布的Windows7Beta版本中,一些差不多安裝使用的用戶的發現了DirectX11差不多包含其中了。DirectX11作為3D圖形接口,不僅支持未來的DX11硬件,還向下兼容當前的DirectX10與10、1硬件。DirectX11增加了新的計算shader技術,能夠允許GPU從事更多的通用計算工作,而不僅僅是3D運算,這能夠鼓舞開發人員更好地將GPU作為并行處理器使用。第一章DirectX簡介三、歷史
Directx11、22013年6月28日,微軟公布Directx11、2(Alpha版),其中一個重要特性是允許游戲使用系統內存與顯存儲存紋理數據,微軟的AntoineLeblond在BUILD大會上演示了主要利用內存而不是顯存去儲存9GB紋理數據。這項特性關于未來的高清游戲具有重要意義。然而一個問題是,DirectX11、2不支持Windows8及之前操作系統,只支持Windows8、1與下一代主機XboxOne及PlayStation4。第一章DirectX簡介三、歷史
XNA美國微軟于8月13日發表針對業余創作者所設計的游戲開發套件「XNAGameStudioExpress」,提供沒有專門開發器材的一般PCWindowsXP使用者開發跨Xbox360與PC平臺游戲的管道、XNA是Microsoft的下一代軟件開發平臺,致力于幫助開發者更快地開發更好的游戲。XNA被微軟公司開發,同時開始于多年前,然而保持地特別秘密。在2004年GDC(年度最大的游戲開發討論會)上微軟第一次宣布XNA。XNA不僅僅像DirectX一樣是個框架;它還包含特別多工具,甚至是一個自定義的IDE。因為直到2006年,還沒有一點工具被公布,DirectX的開發者們僅僅在2004到2006年的DirectXSDK文檔的右上角標示了“XNA”的圖標。第一章DirectX簡介四、項目框架渲染器狀態控制器仿真器第一章DirectX簡介四、項目框架
1、程序入口MainImportsSystemImportsSystem、DrawingImportsContainer=System、ponentModel、ContainerImportsMicrosoft、DirectX第一章DirectX簡介四、項目框架
1、程序入口MainPublicClassMainClass PrivateGraphicsAsGraphicsClass=Nothing PublicSharedSubMain() DimMAsNewMainClass() EndSub
第一章DirectX簡介四、項目框架
1、程序入口Main PublicSubNew() Try Graphics=NewGraphicsClass() CatchEAsDirectXException Return EndTry IfGraphics、CreateGraphicsSample()Then Graphics、Run() EndIf EndSubEndClass第一章DirectX簡介四、項目框架
2、GraphicsClassImportsSystemImportsSystem、DrawingImportsSystem、Windows、FormsImportsMicrosoft、DirectXImportsMicrosoft、DirectX、Direct3DImportsDirect3D=Microsoft、DirectX、Direct3DPublicDelegateSubPeerCloseCallback()PublicDelegateSubMessageDelegate(MessageAsByte)
第一章DirectX簡介四、項目框架
2、GraphicsClassPublicClassGraphicsClassInheritsGraphicsSamplePrivateDrawingFontAsGraphicsFont=NothingPrivateDestinationAsPoint=NewPoint(0,0)PrivateInputAsInputClass=NothingPrivatePlayAsPlayClass=NothingPrivateConstMsgUpAsByte=0PrivateConstMsgDownAsByte=1PrivateConstMsgLeftAsByte=2PrivateConstMsgRightAsByte=3PrivateConstMsgCancelUpAsByte=4PrivateConstMsgCancelDownAsByte=5PrivateConstMsgCancelLeftAsByte=6PrivateConstMsgCancelRightAsByte=7第一章DirectX簡介四、項目框架
2、GraphicsClassPublicSubNew()Me、Text=“游戲框架“
Play=NewPlayClass(Me)Input=NewInputClass(Me,Play)DrawingFont=NewGraphicsFont("Arial",System、Drawing、FontStyle、Bold)EndSub第一章DirectX簡介四、項目框架
2、GraphicsClassProtectedOverridesSubRender()Input、GetInputState()Device、Clear(ClearFlags、TargetOrClearFlags、ZBuffer,Color、Blue,1、0f,0)Device、BeginScene()DrawingFont、DrawText(5,5,Color、White,"X:"&Destination、X&"Y:"&Destination、Y)Device、EndScene()EndSub第一章DirectX簡介四、項目框架
2、GraphicsClassProtectedOverridesSubInitializeDeviceObjects()DrawingFont、InitializeDeviceObjects(Device)EndSub第一章DirectX簡介四、項目框架
2、GraphicsClassProtectedOverridesOverloadsSubDispose(ByValDisposingAsBoolean)Play、Dispose()MyBase、Dispose(Disposing)EndSub第一章DirectX簡介四、項目框架
2、GraphicsClassPublicSubPeerClose() Me、Dispose()EndSub第一章DirectX簡介四、項目框架
2、GraphicsClassPublicSubMessageArrived(MessageAsByte)SelectCase(Message)CaseMsgUp:Destination、X=1… CaseMsgCancelRight:Destination、Y=0EndSelectEndSub第一章DirectX簡介四、項目框架
3、InputClass控制器類ImportsSystemImportsSystem、DrawingImportsSystem、Windows、FormsImportsMicrosoft、DirectXImportsMicrosoft、DirectX、DirectInput第一章DirectX簡介四、項目框架
3、InputClass控制器類PublicClassInputClassPrivateConstMsgUpAsByte=0PrivateConstMsgDownAsByte=1PrivateConstMsgLeftAsByte=2PrivateConstMsgRightAsByte=3PrivateConstMsgCancelUpAsByte=4PrivateConstMsgCancelDownAsByte=5PrivateConstMsgCancelLeftAsByte=6PrivateConstMsgCancelRightAsByte=7
第一章DirectX簡介四、項目框架
3、InputClass控制器類
PrivatePressedDownAsBoolean=FalsePrivatePressedLeftAsBoolean=FalsePrivatePressedRightAsBoolean=FalsePrivateOwnerAsControl=NothingPrivateLocalDeviceAsDevice=NothingPrivatePlayAsPlayClass=Nothing第一章DirectX簡介四、項目框架
3、InputClass控制器類
PublicSubNew(OwnerAsControl,PlayAsPlayClass)Me、Owner=OwnerMe、Play=PlayLocalDevice=NewDevice(SystemGuid、Keyboard)LocalDevice、SetDataFormat(DeviceDataFormat、Keyboard)LocalDevice、SetCooperativeLevel(Owner,CooperativeLevelFlags、ForegroundOrCooperativeLevelFlags、NonExclusive)EndSub第一章DirectX簡介四、項目框架
3、InputClass控制器類
PublicFunctionGetInputState()AsPointDimStateAsKeyboardState=NothingDimPAsPoint=NewPoint(0)DimContinueAsBooleanTryState=LocalDevice、GetCurrentKeyboardState()
第一章DirectX簡介四、項目框架
3、InputClass控制器類
CatchEAsInputExceptionDoContinue=FalseApplication、DoEvents()TryLocalDevice、Acquire()CatchE2AsInputLostExceptionContinue=TrueCatchE3AsOtherApplicationHasPriorityExceptionContinue=TrueEndTry
第一章DirectX簡介四、項目框架
3、InputClass控制器類
IfNotOwner、CreatedThenExitDoLoopWhileContinueEndTryIf(NothingIsState)ThenReturnPEndIf
第一章DirectX簡介四、項目框架
3、InputClass控制器類
If(State、Item(Key、Down))ThenPressedDown=TruePlay、WriteMessage(MsgDown)ElseIf(PressedDown=True)ThenPressedDown=FalsePlay、WriteMessage(MsgCancelDown)EndIf
第一章DirectX簡介四、項目框架
3、InputClass控制器類
If(State(Key、Up))ThenPressedUp=TruePlay、WriteMessage(MsgUp)ElseIf(PressedUp=True)ThenPressedUp=FalsePlay、WriteMessage(MsgCancelUp)EndIf
第一章DirectX簡介四、項目框架
3、InputClass控制器類
If(State(Key、Left))ThenPressedLeft=TruePlay、WriteMessage(MsgLeft)ElseIf(PressedLeft=True)PressedLeft=FalsePlay、WriteMessage(MsgCancelLeft)EndIf
第一章DirectX簡介四、項目框架
3、InputClass控制器類
If(State(Key、Right))ThenPressedRight=TruePlay、WriteMessage(MsgRight)ElseIf(PressedRight=True)ThenPressedRight=FalsePlay、WriteMessage(MsgCancelRight)EndIfReturnPEndFunction第一章DirectX簡介四、項目框架
4、PlayClass玩家角色類
ImportsSystemImportsSystem、CollectionsImportsSystem、Windows、FormsImportsMicrosoft、DirectXImportsMicrosoft、DirectX、DirectPlay第一章DirectX簡介四、項目框架
4、PlayClass玩家角色類PublicClassPlayClassImplementsIDisposablePrivateMessageAsMessageDelegate=NothingPrivateParentAsGraphicsClass=NothingPublicPeerObjectAsPeer=NothingPrivateConnectAsConnectWizard=NothingPrivatePlayerListAsArrayList=NewArrayList()PrivateLocalPlayerIDAsInteger=0PublicAppGuidAsGuid=NewGuid("{876a3036-Ffd7-46bc-9209-B42f617b9bF1}")第一章DirectX簡介四、項目框架
4、PlayClass玩家角色類
PublicStructurePlayersPublicDpnIDAsIntegerPublicNameAsStringPublicSubNew(IdAsInteger,NAsString)DpnID=IdName=NEndSubEndStructure第一章DirectX簡介四、項目框架
4、PlayClass玩家角色類
PublicOverloadsSubDispose()Im
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司文明誠信活動方案
- 2025年藥品安全管理考試試題及答案
- 2025年醫療衛生系統綜合能力考試試卷及答案
- 2025年心理治療師認證考試試卷及答案
- 2025年現代職業教育理論與實踐考試試卷及答案
- 2025年特殊教育教師資格考試卷及答案
- 2025年數字內容運營人才招聘考試試卷及答案
- 2025年人際傳播與關系管理考試試卷及答案
- 追尋生命意義與心理健康
- 做一個身心健康的中學生
- GB/T 91-2000開口銷
- GB/T 18981-2008射釘
- 質量管理體系認證審核活動常見問題的風險控制解決方案 試題
- 青花瓷中國風ppt
- 安全生產普法宣傳課件
- 22104銅及銅合金焊接施工工藝標準修改稿
- DB43-T 1991-2021油茶低產林改造技術規程
- 醫療器械包裝微生物屏障性能測試方法探討
- 柬埔寨各職能部門
- 項目管理之總師項目管理辦法
- TAPPI標準的代碼和內容
評論
0/150
提交評論