知識積累,概要(雜項)

直接進入正文,簡單概括,劃重點!!!

 

堆與棧:

棧存儲較小和短暫的數據,堆存儲較大和較長的數據。

棧是自行維護的,堆需要考慮垃圾回收。

 

GC方面:

垃圾回收主要是指堆上的內存分配和回收。

觸發機制有3種:1.內存不夠,自動觸發。2.定時觸發(依據平臺)。3.GC強制執行

內存分配流程:當需要獲取一個足夠大的內存塊時,檢測是否有足夠的空閒內存  OFF--》 開始GC,清理廢棄內存(引用不再處於激活狀態),再次檢測 OFF --》擴展內存

GC的隱患:1.堆內存變量或者引用越多,清理越耗時,造成遊戲卡頓。2.頻繁釋放內存, 在很多空餘內存可用下,卻沒有足夠大的內存滿足需要,導致再次申請新內存,直到溢出。

減少隱患的方式:1.重構代碼,減少堆內存的分配。2.緩存,根據具體情況分析(示例:出現重複調用產生堆分配的函數時,應該存儲對這些對象的引用)。3.避免在關鍵時刻觸發,可以在場景加載的時候調用GC。 4.對象池,Unity有插件可用

 

DC方面:

Draw call指openGL的描繪次數。

繪圖次序:

假設如果有兩個model,那麼需要  
設置顏色→繪圖方式→頂點座標A→繪製→結束。
設置顏色→繪圖方式→頂點座標B→繪製→結束。

高速繪圖就是,在儘量不改變openGl狀態值的情況下,用一次draw call完成所有繪製。
設置顏色→繪圖方式→頂點座標A+頂點座標B→繪製→結束 。就更加有效率。

優化DC:

1.繪製調用批處理(動態合批靜態合批)

前提:相同材質的物體纔可以進行批處理,如果僅僅是紋理不同,通過“紋理合並”成一張大的紋理。

動態批處理:動態物體共用相同的材質,Unity會自動進行批處理。約束條件:一定頂點數量的網格物體,不要使用縮放尺度,需要相同材質,不能有多通道shader等等...

靜態批處理:物體不移動,並且擁有相同的材質,將GameObject的Static複選框打勾。目前只支持Unity iOS Advanced。

2.遮擋剔除算法和視錐體剔除,適用於複雜的靜態場景

3.調整渲染順序,場景中的東西,使用Z軸來進行空間的劃分,例如背景層,特效層1,人物層,特效層2。

4.打包圖集,功能角度進行劃分,控制圖集的大小。

5.特效清理,用完立刻回收,殘餘的特效會影響性能。

 

渲染流水線:

應用階段:cpu負責,由開發者準備好數據(攝像機,模型,光源)並設置好渲染狀態(材質,紋理,shader類型),輸出渲染所需要的圖元。

幾何階段:gpu負責,把上個階段傳過來的圖元進行逐頂點,逐多邊形的操作。把頂點座標從模型空間經過一系列轉換最終到屏幕空間,光柵器則處理其屏幕空間二維頂點座標,頂點深度、着色等數據。

光柵化階段:gpu負責,對上個階段的逐頂點數據(紋理座標、頂點顏色等)進行插值,再逐像素處理,並決定哪些像素能繪製在屏幕上,並計算他們的顏色。

上圖中綠色表示該流水線是完全可編程控制的,黃色表示可以配置但不可以編程的,藍色表示GPU固定實現的,開發者沒有控制權。虛線框表示該shader是可選的。

 

網絡協議:

名稱                 層次                功能

物理層               1               實現計算機系統與網絡間的物理連接

數據鏈路層       2               進行數據封裝和數據鏈接的建立 (集線器和交換機)

網絡層               3               提供數據通過的路由  (路由器)

傳輸層               4               提供可靠的數據傳輸  (TCP,UDP)

會話層               5               利用傳輸層來提供會話服務,建立和中止連接

表示層               6               數據語法轉換,解決不同數據表示方法的差異

應用層               7               提供應用程序執行通信所需要的協議和功能(HTTP)

 

MVC框架:

定義:爲模型(model)-視圖(view)-控制器(controller)的縮寫,強制性的使應用程序的輸入、處理和輸出分開。

Model(模型):數據模型,包含數據和行爲,主要提供了模型數據查詢和狀態更新等功能。

View(視圖):一般就是用戶界面。

Controller(控制器):委託模型進行處理,對數據模型進行監聽,並把返回的模型數據發送給視圖。

 

數學:

貝塞爾曲線

定義:一般用在計算機 圖形學和 圖像處理。可以用來創建平滑的曲線的道路、 彎曲的路徑,例如祖瑪遊戲、 射門投籃等等。

 

數據結構與算法:

字典樹

定義:用於處理大量字符串,利用公共前綴字段去查詢,以減少無謂的字符串的比較。

作用:可用於大量字符串的存儲與排序,快速查詢某字符串是否已存在或出現過幾次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章