推薦:下面是這些資料的一個(gè)清單(零編程基礎(chǔ)開(kāi)始):
1.《C++ primer》
2.《Windows程序設(shè)計(jì)》
3.《VC++深入詳解》
4.《Windows核心編程》
5.《Effective STL》
6.《Windows游戲編程大師技巧》
7.《DIRECTX.9.0.3D游戲開(kāi)發(fā)編程基礎(chǔ)》
這個(gè)書(shū)籍是從零編程基礎(chǔ)開(kāi)始的,其中部分書(shū)中涉及到了DirectDraw與Direct3D8,這兩個(gè)API在新版本DirectX SDK中都被移除了,現(xiàn)在基本上無(wú)用武之地,所以涉及到DirectDraw與Direct3D 8的那部分就不用仔細(xì)看了哈。
1.DirectX的定義
首先,我們必須了解DirectX的定義。DirectX,(Direct eXtension,簡(jiǎn)稱(chēng)DX)是由微軟公司創(chuàng)建的多媒體編程接口。由C++編程語(yǔ)言實(shí)現(xiàn),遵循COM。被廣泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360電子游戲開(kāi)發(fā),并且只能支持這些平臺(tái)。最新版本為DirectX 11,創(chuàng)建在最新的Windows 7上。MicrosoftDirectX是這樣一組技術(shù):它們旨在使基于Windows的計(jì)算機(jī)成為運(yùn)行和顯示具有豐富多媒體元素(例如全色圖形、視頻、3D動(dòng)畫(huà)和豐富音頻)的應(yīng)用程序的理想平臺(tái)。DirectX包括安全和性能更新程序,以及許多涵蓋所有技術(shù)的新功能。應(yīng)用程序可以通過(guò)使用DirectX API來(lái)訪問(wèn)這些新功能。
學(xué)編程最重要的是實(shí)踐,就是寫(xiě)代碼、看別人寫(xiě)的代碼、再寫(xiě)代碼,你看再多的書(shū),不寫(xiě)代碼,你還是不會(huì)編程。但是寫(xiě)代碼也要講究方法循序漸進(jìn),不能剛學(xué)了幾天語(yǔ)法,就想寫(xiě)個(gè)操作系統(tǒng)什么的,樹(shù)立這種不切實(shí)際的目標(biāo)只會(huì)讓你的自信受到嚴(yán)重打擊迷失自我。同時(shí)小編推薦一個(gè)學(xué)C/C++的學(xué)習(xí)群655706150無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!群內(nèi)有很多干貨和技術(shù)分享!
C/C++的學(xué)習(xí)qun:655706150無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都行
2.引擎設(shè)計(jì)概述
游戲引擎是一系列高檔代碼,我們能夠以它為基礎(chǔ)開(kāi)發(fā)自己的游戲。現(xiàn)代的游戲引擎現(xiàn)已對(duì)運(yùn)用他的人隱藏了底層完結(jié)的細(xì)節(jié)和標(biāo)準(zhǔn)。如,能夠在OpenGL和Direct3D的基礎(chǔ)上開(kāi)發(fā)烘托引擎,這樣,引擎用戶就不需求知道運(yùn)用的是哪一個(gè)烘托引擎,盡管也用到了一些底層的東西。游戲引擎包括:烘托引擎,物理引擎,聲響引擎等。游戲引擎自身只是一個(gè)由更小的引擎組成的調(diào)集。游戲引擎或它包括的內(nèi)容并沒(méi)有一個(gè)精確的界說(shuō)。關(guān)于視頻游戲而言,它的游戲引擎至少要包括烘托引擎和輸入引擎,這是必須的,不然,就不能稱(chēng)其為交互式游戲。游戲程序員和游戲引擎程序員完結(jié)的是兩種不同的作業(yè)。游戲程序員只與開(kāi)發(fā)游戲的游戲引擎打交道,而游戲引擎程序員要開(kāi)宣布其他人用于開(kāi)發(fā)游戲的引擎
3.游戲引擎中的幾個(gè)關(guān)鍵系統(tǒng)
游戲引擎中的幾個(gè)關(guān)鍵系統(tǒng)有:游戲渲染系統(tǒng),輸入系統(tǒng),聲音系統(tǒng),物理系統(tǒng),動(dòng)畫(huà)系統(tǒng),人工智能(AI)系統(tǒng)等。
4. DirectX API函數(shù)
DirectX的API主要由DirectGraphics,DirectInput,DirectPlay,DirectMusic,DirectSound組成。每個(gè)API之間相互獨(dú)立,負(fù)責(zé)完成DirectX內(nèi)核中不同的功能。DirectX中每個(gè)API都可以通過(guò)硬件加速,這意味著這些API可以直接和運(yùn)行軟件的底層硬件對(duì)話。下面是各種API函數(shù)的概要解釋。
DirectGraphics:DirectGraphics為負(fù)責(zé)向屏幕渲染二維圖形和三維圖形的DirectX API,也就是眾所周知的Direct3D。
DirectInput:DirectInput是可以直接使用所有與計(jì)算機(jī)關(guān)聯(lián)的輸入設(shè)備的DirectX API。這些設(shè)備包括鍵盤(pán),鼠標(biāo)和游戲控制器設(shè)備。
DirectPlay:DirectPlay是控制Direct中網(wǎng)絡(luò)功能的Direct API。DirectPlay可以讓?xiě)?yīng)用程序?qū)C(jī)器進(jìn)行網(wǎng)絡(luò)功能設(shè)置,從而可以通過(guò)和其他網(wǎng)絡(luò)玩家交流。
DirectMusic:DirectMusic是負(fù)責(zé)普通聲音處理的DirectX API。
DirectSound:DirectSound是負(fù)責(zé)高級(jí)聲音處理的DirectX API。
5.動(dòng)手寫(xiě)一個(gè)窗口
在Windows中使用Direct3D創(chuàng)建Win32窗口非常簡(jiǎn)單。要?jiǎng)?chuàng)建一個(gè)Win32窗口就必須擁有一個(gè)WinMain函數(shù)(這不是廢話是什么)。我們可以在MSDN中查到WinMain的標(biāo)準(zhǔn)句法
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
當(dāng)程序第一次運(yùn)行時(shí),WinMain函數(shù)中的所有參數(shù)從系統(tǒng)獲取自己的相應(yīng)參數(shù)值。通過(guò)在WinMain函數(shù)內(nèi)部創(chuàng)建一個(gè)類(lèi)型為WNDCLASSSEX的窗口類(lèi)對(duì)象,創(chuàng)建窗口,然后顯示窗口,然后進(jìn)行消息循環(huán),就可以實(shí)現(xiàn)一個(gè)空窗口的顯示。具體實(shí)現(xiàn)代碼如下:下面是上面講的框架代碼,也是后面的筆記二的基礎(chǔ),需要結(jié)合筆記二一起看。
發(fā)現(xiàn)大家都在留言中說(shuō)要推薦一下游戲開(kāi)發(fā)相關(guān)的書(shū)籍,我這里就把各個(gè)階段(從零基礎(chǔ)開(kāi)始)的推薦教程列出來(lái)吧,平時(shí)我寫(xiě)這個(gè)系列的筆記就參考了下面的很多書(shū)籍,大家感興趣的話,可以深入去學(xué)習(xí)(推薦去買(mǎi)實(shí)體書(shū),這樣就不用整天盯著電腦屏幕看傷害眼睛,健康是用錢(qián)買(mǎi)不來(lái)的):
第一階段,首先是C++的精通。推薦《C++ Primer》,之后《Effect C++》。
第二階段,熟悉windows下的編程。推薦看《Windows程序設(shè)計(jì)》。
第三階段,Visual C++的學(xué)習(xí)。推薦的書(shū)《VC++深入詳解》。以及侯俊杰老師的《MFC深入詳解》,與時(shí)俱進(jìn)的有《Visual C++2010入門(mén)經(jīng)典》。
(第二階段和第三階段可以結(jié)合著來(lái)學(xué)習(xí),有很多知識(shí)是相輔相成的,并沒(méi)有什么大的界限。)
第四階段,剛開(kāi)始學(xué)習(xí)專(zhuān)門(mén)介紹游戲開(kāi)發(fā)的教程(有DirectX和OpenGL兩條路可選,這兒我們挑選DirectX,DirectX在國(guó)內(nèi)為干流。 ,薦書(shū)本為《DirectX 9.0 3D游戲開(kāi)發(fā)編程基礎(chǔ)》(封面為一個(gè)紅龍的),《Windows游戲編程大師技巧》,《Direct3D游戲開(kāi)發(fā)技能詳解》等等,當(dāng)然這類(lèi)教程就比較多了,新出的有許多,DirectX相關(guān)的層出不窮,也能夠挑選剛發(fā)行不久的新書(shū),畢竟上面講的常識(shí)比較前沿與更具老練性。(依然感謝liusofttech的指出,為什么我沒(méi)有引薦專(zhuān)門(mén)講解3D編程數(shù)學(xué)根底的教程。我沒(méi)有專(zhuān)門(mén)指出來(lái),是因?yàn)楹?jiǎn)直每一本Direct3D教材里面都有一章到幾章有關(guān)必備數(shù)學(xué)根底常識(shí)的講解。我覺(jué)得獨(dú)自來(lái)學(xué)數(shù)學(xué)根底沒(méi)必要,費(fèi)時(shí)且吃力,我們只要在Direct3D或許OpenGL教材里掌握相關(guān)的數(shù)學(xué)常識(shí),那就足夠了。)
喜歡的可以點(diǎn)一下關(guān)注,