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