文章出處

第一部分 我們對于紋理資源的加載建議如下:

1、嚴格控制RGBA32和ARGB32紋理的使用,在保證視覺效果的前提下,盡可能采用“夠用就好”的原則,降低紋理資源的分辨率,以及使用硬件支持的紋理格式。

2、在硬件格式(ETC、PVRTC)無法滿足視覺效果時,RGBA16格式是一種較為理想的折中選擇,既可以增加視覺效果,又可以保持較低的加載耗時。

3、嚴格檢查紋理資源的Mipmap功能,特別注意UI紋理的Mipmap是否開啟。在UWA測評過的項目中,有不少項目的UI紋理均開啟了Mipmap功能,不僅造成了內存占用上的浪費,同時也增加了不小的加載時間。

4、ETC2對于支持OpenGL ES3.0的Android移動設備來說,是一個很好的處理半透明的紋理格式。但是,如果你的游戲需要在大量OpenGL ES2.0的設備上進行運行,那么我們不建議使用ETC2格式紋理。因為不僅會造成大量的內存占用(ETC2轉成RGBA32),同時也增加一定的加載時間。下圖為測試2中所用的測試紋理在三星S3和S4設備上加載性能表現。可以看出,在OpenGL ES2.0設備上,ETC2格式紋理的加載要明顯高于ETC1格式,且略高于RGBA16格式紋理。因此,建議研發團隊在項目中謹慎使用ETC2格式紋理。

第二部分 我們對于網格資源的管理建議如下

1、在保證視覺效果的前提下,盡可能采用“夠用就好”的原則,即降低網格資源的頂點數量和面片數量;

2、研發團隊對于頂點屬性的使用需謹慎處理。通過以上分析可以看出,頂點屬性越多,則內存占用越高,加載時間越長;

3、如果在項目運行過程中對網格資源數據不進行讀寫操作(比如Morphing動畫等),那么建議將Read/Write功能關閉,既可以提升加載效率,又可以大幅度降低內存占用。

第三部分

1、Shader資源的物理體積與內存占用雖然很小,但其加載耗時開銷的CPU占用很高,這主要是因為Shader的解析CPU開銷很高,成為了Shader資源加載的性能瓶頸;

2、Mobile/Particles Additive在解析方面的耗時遠小于Mobile/Diffuse、Mobile/Bumped Diffsue甚至Mobile/VertexLit;

3、除Mobile/Particles Additive外,其他三個主流Shader在加載時均會造成明顯的降幀,甚至卡頓。因此,研發團隊應盡可能避免在非切換場景時刻進行Shader的加載操作;

4、隨著硬件設備性能的提升,其解析效率差異越來越不明顯。

我們對于Shader資源的管理建議如下:

1、在保證渲染效果和項目需求的情況下,盡可能降低Shader的Keyword數量,以提升Shader的加載效率;

2、對于簡單Shader,可嘗試去除Fallback操作,該方法非常適合于目前正在大量使用的Mobile/Diffuse、Mobile/Bumped Diffuse等Built-in Shader;

3、盡可能對Shader進行單獨、依賴關系打包并對其進行預加載,以降低后續不必要的加載開銷。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()