提Unity3D項目優化則必提DrawCall,這自然沒錯,但也有很不好影響。因為這會給人一個錯誤的認識:所謂的優化就是把DrawCall弄的比較低就對了。

對優化有這種第一印象的人不在少數,drawcall的確是一個很重要的指標,但絕非全部。為了讓各位和我能達成儘可能多的共識,我首先介紹一下本文可能會涉及到的幾個概念,之後會提出優化所涉及的三大方面:

  • drawcall是啥?其實就是對底層圖形程序(比如:OpenGL ES)介面的調用,以在屏幕上畫出東西。所以,是誰去調用這些介面呢?CPU。
  • fragment是啥?經常有人說vf啥的,vertex我們都知道是頂點,那fragment是啥呢?說它之前需要先說一下像素,像素各位應該 都知道吧?像素是構成數碼影像的基本單元呀。那fragment呢?是有可能成為像素的東西。啥叫有可能?就是最終會不會被畫出來不一定,是潛在的像素。 這會涉及到誰呢?GPU。
  • batching是啥?都知道批處理是幹嘛的吧?沒錯,將批處理之前需要很多次調用(drawcall)的物體合併,之後只需要調用一次底層圖形程序的介面就行。聽上去這簡直就是優化的終極方案啊!但是,理想是美好的,世界是殘酷的,一些不足之後我們再細聊。
  • 內存的分配:記住,除了Unity3D自己的內存損耗。我們可是還帶著Mono呢啊,還有託管的那一套東西呢。更別說你一激動,又引入了自己的幾個dll。這些都是內存開銷上需要考慮到的。

好了,這幾個概念提前講清楚了,接下來就講優化所涉及到的三個大方面:

  1. CPU方面:

佔佔:Unity優化之CPU優化?

zhuanlan.zhihu.com圖標

2. GPU方面

佔佔:Unity優化之GPU優化?

zhuanlan.zhihu.com
圖標

3. 內存方面

佔佔:Unity優化之內存優化?

zhuanlan.zhihu.com
圖標


點下面鏈接添加我的微信(summer_dan_3),從此多一個開發者好友:

佔佔的微信(summer_dan_3)?

kylinzhan.cn


推薦閱讀:

相关文章