2012年因?yàn)闀r(shí)間問(wèn)題,主要精力花在DX11的開(kāi)發(fā)上與為適應(yīng)DX11對(duì)引擎的修。
都說(shuō)2013年是手游年,因此2013年中開(kāi)始做gles2渲染器的開(kāi)發(fā)。
一、引擎設(shè)計(jì)上的改變
1)RTT設(shè)計(jì)的改變。原來(lái)的RenderTarget類(lèi)廢棄掉,改為T(mén)extureRenderTarget類(lèi)。
這樣修改的好處是,原來(lái)RenderTarget不再需要裝渲染流程,讓引擎代碼簡(jiǎn)潔起來(lái),渲染對(duì)象就是一個(gè)渲染對(duì)象,沒(méi)有流程 可言。
TextureRenderTarget繼承自ITexture,表明這個(gè)RTT可以作為輸入的紋理來(lái)使用。
2)DepthStencil類(lèi)的誕生,解決深度在RTT中的關(guān)聯(lián)問(wèn)題,還有效的解決了shadowmap中的深度圖作為紋理的問(wèn)題。
這個(gè)類(lèi)代表的是深度緩沖,原來(lái)直接在RenderTarget的類(lèi)里關(guān)聯(lián)深度緩沖,這個(gè)類(lèi)現(xiàn)在廢掉,意味著深度緩沖可以單獨(dú)拿出來(lái)使用,只要在外層設(shè)置RTT的時(shí)候設(shè)定是否需要這個(gè)類(lèi)就可以了。
而且可以把深度紋理解放出來(lái),因?yàn)閟hadowmap的問(wèn)題,原來(lái)要有一個(gè)叫深度紋理的東西與紋理偶合在一塊。
3)渲染流程的封裝
因?yàn)椴煌腞TT確實(shí)有不同的渲染流程,但大多的RTT的流程是一樣的,所以需要封裝一個(gè)渲染流程的類(lèi),這個(gè)類(lèi)會(huì)引用到相關(guān)的RTT。
因此,把RTT中的攝像機(jī),渲染流程都抽到外層去了,這樣整個(gè)引擎更加靈活。而且適用性更高。
二、適應(yīng)GLES2所做出的設(shè)計(jì)上的修改。
1)ShaderObject類(lèi)的誕生
因?yàn)間les2有個(gè)shaderobject的對(duì)象,這個(gè)東西必須要把VS和PS關(guān)聯(lián)起來(lái),在d3d下是完全沒(méi)必要的,因此地奈之下生成了這個(gè)類(lèi)。
2)引擎代碼和解決方案用premake生成
通過(guò)lua文件來(lái)配置環(huán)境與各項(xiàng)目的屬性
三、gles2渲染器的實(shí)現(xiàn)。
這里太多的坑和細(xì)節(jié),不在這單獨(dú)寫(xiě)了。
四、2014年工作重心
1)gles2的完善
2)移動(dòng)平臺(tái)環(huán)境的搭建與編譯,現(xiàn)在gles2的開(kāi)發(fā)是用powervr來(lái)模擬開(kāi)發(fā),還沒(méi)在真正的移動(dòng)平臺(tái)上跑過(guò)相關(guān)的程序。有經(jīng)驗(yàn)的朋友提醒我:這個(gè)得及是弄,越早越好!
3)前兩個(gè)完成后,在dx11環(huán)境下實(shí)現(xiàn)skin instancing、延遲渲染和cascade shadowmap。