此刻我稱自己叫小狗,從事unity手游兩年睦番,干什么事兒都是淺嘗輒止欢际,之前嘗試學(xué)習(xí)過directx9和11母市,但都是第一個demo沒看完就放棄了,這次希望能多寫幾篇损趋,哈哈
目前就我知道的幾個圖形學(xué)api有以下幾種(說錯了,求輕黑):
1,OpenGL浑槽。這貨由一幫大佬公司組成的Khronos Group提供支持蒋失,身世坎坷。它是接口桐玻、接口篙挽、接口,沒有實(shí)現(xiàn)镊靴,具體運(yùn)行時由具體的大佬公司提供铣卡。它有一幫兄弟OpenCL、OpenGL|ES(移動端)偏竟、WebGL煮落。優(yōu)點(diǎn):跨平臺,工業(yè)級踊谋,游戲娛樂也不在話下蝉仇;缺點(diǎn):相對更新慢、缺少開發(fā)工具支持殖蚕、兼容性問題
2轿衔,Directx。這貨是微軟的親兒子睦疫,微軟本來也是Khronos Group成員害驹,后來可能感覺組織里面簡直都是豬一樣的隊(duì)友,就自己玩蛤育,專心搞dx裙秋,并且使勁兒打壓OpengGL。上面那貨的優(yōu)點(diǎn)就是它的缺點(diǎn)缨伊,缺點(diǎn)就是它的優(yōu)點(diǎn)
3摘刑,Metal。這是蘋果2014年推出的API刻坊,當(dāng)然也就只能在蘋果的產(chǎn)品上用枷恕。Iphone上的《狂野飆車8》,可以感受下谭胚。
4徐块,Vulkan。這貨是中文叫火山或者福爾康灾而,是去年Khronos Group發(fā)布的胡控,據(jù)說真正平臺無關(guān)性,一次開發(fā)可以發(fā)布pc旁趟、移動昼激、web,支持多線程,傳統(tǒng)的API都是單線程的橙困。我最愛的DOTA2現(xiàn)在已經(jīng)支持了瞧掺。
選DX12的原因,小狗我最開始接觸的就是dx凡傅,環(huán)境搭建簡單辟狈,也支持多線程。但有個最坑爹的缺點(diǎn)夏跷,只有win10支持哼转,win7都不支持,看到這個的時候狗下巴都快掉了2刍R悸!
dx12更接近底層硼莽,支持多線程庶溶,這個是大勢所趨。網(wǎng)上相關(guān)的文檔教程太少了懂鸵,建議看官網(wǎng)的英文文檔偏螺,我也是四級剛過,整個翻譯軟件慢慢看吧匆光!
一套像,將系統(tǒng)升級到Win10,裝上VS2015(默認(rèn)的安裝選項(xiàng)沒有選中win10sdk)
二终息,新建dx12項(xiàng)目夺巩,直接運(yùn)行就是第一個demo。使用OpenGL搭建一個這樣的環(huán)境周崭,估計(jì)只有用過的人才知道
三柳譬,沒有HelloWorld,一上來就是一千行的代碼续镇,入門確實(shí)需要些基礎(chǔ)和毅力美澳,要是有比我還菜的,我建議學(xué)習(xí)下入門的圖形學(xué)知識摸航,最起碼知道MVP變換過程吧制跟,可以的話再找個容易入門的引擎用下。
1酱虎,App類雨膨,這是個窗口類,因?yàn)閐x都是桌面應(yīng)用程序读串,因此它必須依托windows窗口之上聊记,這個我覺得剛開始了解就行撒妈,知道哪些方法是初始化的、每幀調(diào)用的甥雕、各個事件分別驅(qū)動哪個函數(shù)即可
2踩身,AppMain類胀茵,這算是個對Sample3DSceneRenderer的控制類社露,結(jié)構(gòu)比較簡單
3,DeviceResources類琼娘,dx資源的基礎(chǔ)類峭弟,創(chuàng)建dx環(huán)境。
4脱拼,Sample3DSceneRenderer類瞒瘸,具體要渲染的游戲內(nèi)容,可以理解為引擎中的一個材質(zhì)球
5熄浓,SampleVertexShader情臭、SamplePixelShader,這兩個分別是最基本的頂點(diǎn)赌蔑、片段著色器俯在,是面向GPU并行計(jì)算的。上面所有的c++代碼都只是處理邏輯娃惯,設(shè)置渲染管線的狀態(tài)跷乐,我們在屏幕上看到的所有游戲內(nèi)容都是靠shader把數(shù)據(jù)渲染上去的。
其中3趾浅,4愕提,5是我們重點(diǎn)要學(xué)習(xí)的內(nèi)容,在接下來會具體的去學(xué)習(xí)這些東西
三皿哨,MSDN的創(chuàng)建基本的d3d12組件流程浅侨,主要有幾個步驟
1,Initialize如输。這又分兩個部分:1)初始化渲染管線,對應(yīng)上面的demo就是DeviceResources做的椎例;2)初始化資源,對應(yīng)的是Sample3DSceneRenderer订歪,就是游戲中具體的某一個游戲內(nèi)容,就是demo中的正方體刷晋。
2盖高,Update。這里面一般就是我們的游戲邏輯喻奥,比如行走、設(shè)計(jì)撞蚕、釋放技能等等润梯。上面demo中只有旋轉(zhuǎn)邏輯甥厦。
3,Render刀疙。設(shè)置并執(zhí)行命令舶赔,最后提交當(dāng)前幀。這一步是CPU把所有都準(zhǔn)備好谦秧,然后提交給GPU竟纳,開始渲染畫面。
4疚鲤,Destroy锥累。就是善后工作。